快捷搜索:   nginx

linux 断线自动切换脚本

Linux Shell Script: 自動切換路由
環境說明:

兩條 線路: 伺服器 (A) 對外連線, LAN User 透過 Linux NAT ADSL (B) 對外連線.
當 ADSL Router (B) 斷線時, Linux NAT 自動調整路由, 讓 LAN User 改以 ADSL Router (A) 對外連線.
當 ADSL Router (B) 線路恢復時, Linux NAT 自動調整路由, 讓 LAN User 再從 ADSL Router (B) 對外連線.
檢視網路環境簡圖
Linux Shell Script:

假設 ADSL Router (A) 使用 Hinet 線路; ADSL Router (B) 使用 TFN 線路


#!/bin/sh

if [ -n "`route -n | grep 0.0.0.0 | grep UG | grep 192.168.1.254`" ]; then
line="tfn"
else
line="hinet"
fi

while 1=1;
do
ping -c 1 -t 255 211.78.215.200 >; pinging_result
if [ -n "`grep '100% packet loss' pinging_result`" ] && [ $line = "tfn" ]; then
echo "change to hinet"
route del default gw 192.168.1.254
route add default gw 192.168.0.254
route add -host 211.78.215.200 gw 192.168.1.254
line="hinet"
elif [ -z "`grep '100% packet loss' pinging_result`" ] && [ $line = "hinet" ]; then
echo "change to tfn"
route del default gw 192.168.0.254
route add default gw 192.168.1.254
route del -host 211.78.215.200 gw 192.168.1.254
line="tfn"
fi
sleep 10s
done
行號 說明
03~07 以目前 Default Gateway 的設定判斷對外使用線路
09 無窮迴圈
11 ping TFN public DNS IP
12~17 如果 ping 失敗 (網路不通) 而且目前使用 TFN 線路者, 切換至 Hinet 的線路
16 設定對 TFN public DNS IP 的路由, 下次再 ping 這個 IP 時會從 eth1 (192.168.1.0 / 24) ping 出去, 以得知 TFN 線路是否已恢復
18~23 已切換使用 Hinet 線路, 而 TFN 線路已恢復時的處理: 還原路由設定, 讓 LAN User 轉回使用 TFN 線路
25 Script 程序暫停 10 秒鐘
顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论