そこで,アラートが発生した際にそのメッセージをメールとしてサーバから管理者に送信する事で,トラブルの見落としを防ぐ事が可能となる.
※下記サンプルをCentOS上で動かすために,
1.sendmailのインストール
yum install sendmail2.スクリプト中のsendmailのパスを変更
service sendmail start
chkconfig sendmail on
/usr/local/sendmail → /usr/sbin/sendmail3.MAIL_TOを自分のメールアドレスに変更
4.iconvの記述を変更
iconv -f EUC-JP -t ISO-2022-JP → iconv -f UTF-8 -t ISO-2022-JP
mail_plain.bash
#!/bin/bash # メール設定 MAIL_FROM="foo@example.com" MAIL_TO="bar@example.com" MAIL_SUBJECT="テストメール" MAIL_ID="<$(date +%Y%m%d%H%M%S).$(id -ru).$$@$(hostname)>" SENDMAIL=/usr/lib/sendmail # 共通関数の読み込み FILE_UTIL=util_common.bash . "${FILE_UTIL}" 2> /dev/null \ || . "${0%/*}/${FILE_UTIL}" 2> /dev/null if [ $? -ne 0 ]; then echo "Can't load ${FILE_UTIL}!" 1>&2 exit 1 fi # 文字コードを英語に unset_linguas # 作業ディレクトリの作成 tmpdir=$(make_tmp_dir 2>/dev/null) if [ $? -ne 0 ]; then echo "Can't create temporary directory!" 1>&2 exit 2 fi # trap の設定 SIGNALS="HUP INT QUIT PIPE TERM" trap "{ clean_tmp_dir; exit; }" ${SIGNALS} # サブジェクトを Base64 エンコーディング subject=$(echo -n "${MAIL_SUBJECT}" | iconv -f EUC-JP -t ISO-2022-JP | perl -MMIME::Base64 -ne 'print encode_base64($_)') # メールの作成 mail_data="${tmpdir}/mail_data" cat <<EOF > "${mail_data}" Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit From: ${MAIL_FROM} To: ${MAIL_TO} Subject: =?ISO-2022-JP?B?${subject}?= Message-Id: ${MAIL_ID} Date: $(date +"%a, %e %b %Y %H:%M:%S %z") -------------------------------------------------------- UPTIME -------------------------------------------------------- $(uptime) -------------------------------------------------------- W -------------------------------------------------------- $(w) -------------------------------------------------------- FREE -------------------------------------------------------- $(free) EOF # メールの送信 iconv -f EUC-JP -t ISO-2022-JP "${mail_data}" | "${SENDMAIL}" -oi "${MAIL_TO}" > /dev/null 2>&1 # 作業ディレクトリの削除と trap 解除 clean_tmp_dir trap ${SIGNALS}
0 件のコメント:
コメントを投稿