Linuxコマンド:コマンド実行結果をメール通知するワンライナー

cronでは、実行したスクリプトの標準出力、または標準エラー出力をメール送信しますが、cronが送信してくるメールは、そのままでは差出人や件名がわかりにくくないですか。

そこで、実行するコマンドに続けて、mailコマンドを使ってメール送信することで、メールの体裁が良くなり分かりやすくなります。

ここでは、コマンド実行からメール送信までを1行で実現する(ワンライナー)方法を紹介します。

ワンライナー

MSG=`/home/hoge/scripts/myscript.sh`; (if [ -n "$MSG" ]; then (echo $MSG | mail -s 'NOTICE : Something went wrong.' admin@yourdomain.com) fi)

上のコマンドの処理の流れは、以下のとおりです。

  1. スクリプト「myscript.sh」の戻り値を、変数「MSG」に代入
  2. 変数「MSG」の文字列長が0より大きい場合に、次の処理を実行
  3. 以下の内容でメールを送信
    件名:NOTICE : Something went wrong.
    宛先:admin@yourdomain.com
    本文:変数MSGの内容

if分での条件判定は、実行するスクリプトにより適宜修正してください。

まとめ

単純にコマンドを続けて実行しているだけですが、日に何通もシステムメールが来るのであれば、件名をわかりやすくしておくことで、本文を見なくても状況を把握できたりして良いと思います。