detect.sh (偵測主要bridge firewall是否正常)
#!/bin/bash
COUNT=0 # 用來判斷連續異常次數累計
CHECK=0 # 用來識別本機bridge firewall是否建立
sleep 10s # 因為開機後馬上偵測常會有問題,因此先等10秒後才開始偵測
while [ "yes" == "yes" ]
do
# 偵測主要bridge firewall的介面2是否正常,1代表正常,0代表不正常
FILESRV=`ping -c1 FW3 |grep FW3 |grep -c ttl`
# 如果不正常
if [ $FILESRV -eq 0 ]
then
# COUNT累加,用來重複寄送提醒信件
COUNT=$(($COUNT+1))
# 如果目前本機並沒有建立bridge firewall
if [ $CHECK -eq 0 ]
then
# 開始建立bridge firewall
CHECK=1
# 原本不管怎樣先把bridge刪掉,但是後來發生問題,就拿掉了
#/usr/bin/ssh FW3 '/bin/sh /br-fw/br-del.sh'
# 稍等一下
sleep 1s
# 呼叫br-add.sh建立bridge firewall
/bin/sh /br-fw/br-add.sh
# 寄發通知信件給管理者,目前已取代主要bridge firewall
mail -s "FW Server 3 Down" cowman.chiang@gmail.com < /br-fw/1.txt
fi
# 如果異常次數超過200,在寄發一次通知信件
if [ $COUNT -eq 200 ]
then
mail -s "FW Server 3 Down" cowman.chiang@gmail.com < /br-fw/1.txt
# COUNT歸零,重新計數
COUNT=0
fi
#echo $COUNT
fi
# 如果連線偵測正常
if [ $FILESRV -eq 1 ]
then
# 如果目前本機有建立 bridge firewall,則移除掉,因為是以跳線直接連接,並且
# 主要bridge firewall是開機會重新建立bridge firewall,因此需要先移除掉本機
# 不然會造成嚴重之loop
if [ $CHECK -eq 1 ]
then
# 標示本機無bridge firewall
CHECK=0
#echo "open"
# 移除掉本機 bridge firewall
/bin/sh /br-fw/br-del.sh
# 寄發通知信件給管理者,目前主要bridge firewall已恢復
mail -s "FW Server 3 Down" cowman.chiang@gmail.com < /br-fw/2.txt
fi
COUNT=0
#echo $COUNT
fi
# 每執行完後停頓3秒再偵測一次
sleep 3s
done