DDNSの死活監視など

mydns.jp使ってるんだけど、たまに落ちたりするので、ログ取りと同期処理に死活監視も加えることにした。
アクセスNGになったらメール送信、加えてアクセスOKだが同期でNGが連発したらメール送信。
1周間くらい回して問題なさそうなので、メモがてら載っける。
ログ見てると結構エラーで弾かれてるのね。

【動作環境】
 CentOS7
 ssmtp


#!/usr/bin/bash

##Profileなど
REQUEST=自分のドメイン
DDNS=www.mydns.jp
USER=mydns.jpのID
PASS=mydns.jpのパスワード
MAIL=通知先メールアドレス
BIN=/usr/bin
TEMP=/root/temp #適当に変えて
LOG=/var/log/ddns.log #適当に変えて
COUNT=/root/temp/count #適当に変えて

###pingOK/NG判断
ping -c1 $DDNS > /dev/null

###pingOK
if [ $? = 0 ] ; then
###wget login試行
wget -O - "https://"$USER":"$PASS"@"$DDNS"/login.html" > /dev/null 2>&1

###wget 終了ステータス毎の処理
###man wget : EXIT STATUSに記載
###正常終了なら[OK]ロギング
if [ $? -eq 0 ] ; then
echo "[OK] "`date`" ["$REQUEST"]" >> $LOG ;
###異常終了なら[NG]ロギング(1~8)
elif [ $? -eq 1 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 1 Generic error" >> $LOG ;
elif [ $? -eq 2 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 2 Parse error" >> $LOG ;
elif [ $? -eq 3 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 3 File IO error" >> $LOG ;
elif [ $? -eq 4 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 4 Network failure" >> $LOG ;
elif [ $? -eq 5 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 5 SSL verification failure" >> $LOG ;
elif [ $? -eq 6 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 6 Authentication failure." >> $LOG ;
elif [ $? -eq 7 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 7 Protocol errors" >> $LOG ;
elif [ $? -eq 8 ] ; then
echo "[NG] "`date`" ["$REQUEST"] Cause : 8 Server issued an error response" >> $LOG ;
fi # wgetif

###最終処理5件のうち[OK]ログが1つも無い場合はメール送信
tail -n5 $LOG | grep "[OK]" | grep $REQUEST | wc | awk '{print $1}' > $COUNT
if [ `cat $COUNT` -lt 1 ] ; then
tail -n10 $LOG | grep $REQUEST | mail -s "[$REQUEST] DDNS Access-request failed" $MAIL
rm -f $COUNT
fi # tail
###pingNG
else
$BIN/dig $REQUEST >> $TEMP/dig
$BIN/dig $DDNS >> $TEMP/dig
$BIN/cat $TEMP/dig | mail -s "[$REQUEST] DDNS no repry" $MAIL
$BIN/rm -f $TEMP/dig
fi # pingif

Leave a Reply

Your email address will not be published.