Linux環境でcronでのコマンド実行結果を分かりやすくメール通知する方法

Linux環境でcronでのコマンド実行結果を分かりやすくメール通知する方法

Linux環境でcronを使ってスクリプトなどを定期実行させて、実行結果をメール通知させている方もいらっしゃると思いますが、cronが送信してくるメールは、そのままでは差出人や件名がわかりにくい場合があります。

そのような時は、実行するコマンドに続けて、mailコマンドを使ってメール送信することで、メールの体裁(件名や本文)を分かりやすく整えることができます。

そこで、ここではcronでのコマンド実行結果を分かりやすくメール通知する方法を紹介します。

動作環境

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS Linux7.9.2009

コマンドの実行結果をメール送信する

コマンドの実行結果をメール送信するときは、以下のように1行のコマンドで実行することができます。

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

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

MSG=`/home/hoge/scripts/myscript.sh`

スクリプト「myscript.sh」の戻り値を、変数「MSG」に代入しています。

if [ -n "$MSG" ]; then

変数「MSG」の文字列長が0より大きい場合に、指定した処理(メール送信)を行います。

なお、if文での条件判定は、実行するスクリプトが返す値によって適宜修正してください。

echo $MSG | mail -s 'NOTICE : Something went wrong.' admin@yourdomain.com

以下の内容でメールを送信します。

  • 件名:NOTICE : Something went wrong.
  • 宛先:admin@yourdomain.com
  • 本文:変数MSGの内容

あとがき

cronから日に何通もメールが来るのであれば、ここで紹介した方法でメールの件名などを分かりやすくするなどしておけば、いちいち本文を見なくても件名を見ただけで状況を把握できるといった効率化を測れるでしょう。