回答:
output=$(grep line /var/log/file); [[ -n "$output" ]] && mail -s Log email@domain.tld
または、これをcronジョブにして、出力が生成されると、ユーザーに電子メールで送信できます。/ etc / aliasesファイルを編集(およびnewaliasesコマンドを実行)して、ボックスにないアドレスにメールを送信できます。
cronエントリの例(件名行を設定することはできませんthogh
1 0 * * * grep line /var/log/file
または、ifneユーティリティを入手できます-これはおそらくあなたが望むものです
grep行/ var / log / file | ifne mail -sログemail@domain.tld
ifneは、centosおよびRHELのepelリポジトリからコマンドを使用可能にします。オンラインでmanページへのリンクが見つかりませんが、
ifne(1)
ifne(1)NAME ifne-標準入力が空でない場合にコマンドを実行します
構文ifne [-n]コマンド
説明ifneは、標準入力が空でない場合にのみ、次のコマンドを実行します。
オプション-n操作を逆にします。標準入力が空の場合、コマンドを実行します。
Note that if the standard input is not empty, it is passed through ifne in this case.
例find。名前コア| ifne mail -s "Core files found"ルート
著者:Copyright 2008 by Javier Merino
Licensed under the GNU GPL 2008-05-01 ifne(1)
ifne
のmoreutils
パッケージに含まれています。残念ながら、そのパッケージは、パッケージのコマンドparallel
と競合するものももたらします。parallel
parallel
「man mail」は、引数-Eが本文が空の場合、メールの送信を停止することを示しています。私にとってはうまくいきます。
-E
送信メッセージの最初または唯一のメッセージ部分にテキストが含まれていない場合、メッセージを送信せずにサイレントに破棄し、プログラムの起動時にskipemptybody変数を効果的に設定します。これは、cron(8)によって開始されたスクリプトからメッセージを送信するのに便利です。
mail
or mailx
コマンドを提供する複数の代替パッケージがあります。パッケージの両方を提供してここで説明するオプション。bsd-mailx
heirloom-mailx
mailx
-E
grep "find me" /var/log/something | mail -s "That text you were looking for is now in the logs" -E mail@example.com
/unix//a/100720/27458を参照してください
ifneを使用するだけです:
grep line /var/log/file | ifne mail -s Log email@domain.tld