detect.sh (偵測網路狀態,以判定是否要移除bridge或重建bridge)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/bin/bash COUNT=0 # 用來計算次數之變數 FLAG="YES" # 用來締造無窮迴圈之變數 FLAGA="YES" # 用來判斷目前是否有無建立bridge,預設是有建立 <!--more--> 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 |