detect.sh (偵測網路狀態,以判定是否要移除bridge或重建bridge)
#!/bin/bash
COUNT=0 # 用來計算次數之變數
FLAG="YES" # 用來締造無窮迴圈之變數
FLAGA="YES" # 用來判斷目前是否有無建立bridge,預設是有建立
while [ $FLAG == "YES" ]
do
# ping 學術網路的gateway,如果正常為1,不正常為0
FILESRV=`ping -c1 TAGW |grep TAGW |grep -c ttl`
#echo $FILESRV
# 如果不正常
if [ $FILESRV -eq 0 ]
then
# COUNTA用來記錄目前連線是否恢復正常,當發生不正常時歸零,當正常時累加
COUNTA=0 #connection still has problem
# 如果目前是有建立bridge的狀態
if [ $FLAGA == "YES" ]
then
# 利用COUNT累加計算當建立bridge時,不正常次數連續發生幾次
COUNT=$(($COUNT+1))
# 如果連續3次,則移除掉本機bridge,藉由eth2無法回應backup firewall已啟動備援
if [ $COUNT -eq 3 ]
then
/bin/sh /br-fw/br-del.sh #let network down, let backup firewall up
FLAGA="NO" #no bridge
fi
fi
fi
# 如果網路連線正常
if [ $FILESRV -eq 1 ]
then
# 使COUNT歸零重新計算
COUNT=0 #connection is not stable
# 如果目前bridge是不存在
if [ $FLAGA == "NO" ]
then
# 利用COUNTA計算網路不正常後恢復共測試了幾次
COUNTA=$(($COUNTA+1))
echo $COUNTA
# 如果連續正常次數累積達30次,則重新建立本機bridge firewall
if [ $COUNTA -eq 30 ]
then
# 呼叫 br.sh 建立 bridge firewall
/bin/sh /br-fw/br.sh
# 標示目前本機已建立bridge firewall
FLAGA="YES"
# 告知管理者,目前已重建完成bridge firewall
mail -s "FW Server 1 (From Server 1)" cowman.chiang@gmail.com < /br-fw/3.txt
fi
fi
fi
# 隔五秒再行測試一次
sleep 5s
done