
私はmsmtpを使用して会社に設定したいくつかのRPiキオスクに電子メール通知を生成しています。残念ながら、電子メール通知にログファイルの最後の5行を含めようとすると、msmtpは改行を正しく処理できず、エラーが発生します。すべて1行のテキストで印刷します。ログファイルのすべての行に\ nが含まれていると、電子メール警告に正しく出力されます。
このコマンドの基本例は次のとおりです。
echo -e "This is a test. $(tail -5 /var/log/syslog)" | msmtp @domain
syslogをエコーするがmsmtp
改行文字を処理できないように見えるため、すべてテキストに囲まれています。 syslog を手動で編集して各行\n
の末尾に追加すると、正しく印刷されます。
\n
ログファイルの各行の末尾に追加するsedまたはawkの正しい構文は何ですか?
答え1
これはとても簡単です。入力は、msmtp
ヘッダーと本文を含む正しい形式の電子メールメッセージでなければなりません。結局/usr/{bin,lib}/sendmail
、ヘッダーを本文から分離しなかったか、実際にヘッダーをまったく生成しませんでした。あなたのsyslog行は(非常に奇妙な)ヘッダーとして扱われます。
ヘッダー。新しいチーム。体。それを生成します。
答え2
私の考えではメールツールが待っているようです\r\n
。これは、Microsoft製品で使用される行末でもあります。 (それら(またはCP / Mの作成者)はプリンタに送信するときに変換する方法がわからなかったので、回避策としてすべてのファイルにこの行末を指定しましたmsmtp
。
だからそれをパイプで接続してみてくださいunix2dos
。
つまり
echo -e "This is a test. $(tail -5 /var/log/syslog)" | unix2dos | msmtp @domain
また、ログを解釈するためにエコーを使用する予定ではない場合。やるよ
{
echo -n "This is a test. "
tail -5 /var/log/syslog
} |
unix2dos |
msmtp