FreeBSD-8.0でやっていた自動メール通知をopensolarisでも同じようにやってみる。
まずsendmailをLAN内の既に建ててあるMTAメールサーバ経由で動く様に変更。
# cd /etc/mail/cf/cf
# nano -w sendmail.mc
dnl define(`confFALLBACK_SMARTHOST', `mailhost$?m.$m$.')dnl
の行を
define(`confFALLBACK_SMARTHOST', `LAN内の自分のメールサーバIP')
に変更して保存
# make
# svcadm restart sendmail
#sendmail 再起動
sendmailの設定終わり。
次に異常検知&メール送出スクリプトとcronの設定。
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
ZSTAT=`zpool status`
NUM=`echo "$ZSTAT" | grep DEGRADED | wc -l`
if [ $NUM != 0 ] ; then
echo "Sending emergency mail"
cat <<EOF > /tmp/mail.txt
From:fileserver
Cc:
To: 自分のメールアドレス
subject: Server disk damaged!
EOF
echo "$ZSTAT" >> /tmp/mail.txt
cat /tmp/mail.txt | sendmail -t
rm /tmp/mail.txt
fi
|
スクリプトは前と同じ。
適当に/etc/emcmail.shなどに保存して実行属性を付けておく。
crontabでcronに設定を追加する。
# EDITOR=nano crontab -e
0,20,40 * * * * /etc/emcmail.sh
20分毎にスクリプトを起動する設定を追加。
*/20という書き方はエラーになって保存できないので決め打ち
保存して終了
# svcadm restart cron
#cron再起動
以上で設定終わり。
ちゃんとメールが飛ぶかテスト。
# zpool offline tank デバイス名
などしてわざとプールをDEGRADEDにさせてメールを出させてみる。
チェックが済んだら、
# zpool online tank デバイス名
# zpool clear tank
として戻しておく。
早くどれかドライブ壊れないかなぁ〜とかいう不謹慎(?)なことを考えてしまうが、こういうことをやったときに限って5台揃って10年もったりするのが常ではある。