編寫名為auto_change_gw.sh的腳本,用來自動切換主機網關,相關說明如下:
1)有2個可用的網關地址,分別是主網關192.168.10.254和備用網關192.168.10.253,當前使用的默認網關是192.168.10.254;
2)若當前使用的網關地址192.168.10.254出現問題,自動把網關地址切換為192.168.10.253;
3)當網關地址192.168.10.254能正常工作後,當前主機再把網關地址切換到192.168.10.254。
講下思路:
1、先用while 循環建一個死循環,為了讓腳本永久循環下去,因為要實時測試主網關能否連通
while :
do
done
2、進入死循環後,在死循環裡面再嵌套兩個循環
第一個循環while循環,就是ping主網關,能ping通就繼續ping,ping不通循環結束。就進入第二個循環
進入第二個循環前先刪除默認網關,換上備用網關
3、進入第二個循環,是until循環,繼續ping主網關,ping不通就繼續ping,ping的通就結束循環,注意跟第一個循環的區別
此時由於是死循環的原因,又重頭開始第一個循環,進入循環前需要先刪除默認網關,換上主網關,這也是那兩個命令在開頭寫的原因
[root@mgm shell]# vim auto_change_gw.sh
1 #!/bin/bash
2 gw1=192.168.10.253
3 gw2=192.168.10.251
4 (
5 while : //進入死循環
6 do //進入死循環的操作
7 route del default
8 route add default gw $gw1 //刪除默認網關,並設gw1為默認網關。這兩個命令主要是為了第二個循環結束後進行的操作
9 while ping -c 1 $gw1 &> /dev/null //測試能否ping通主網關。while循環是測試條件成立會繼續循環,即繼續ping下去
10 do
11 sleep 1 //ping成功會休眠一秒
12 done //ping不通結束循環
13 route del default
14 route add default gw $gw2 //第一個循環結束後進行的操作,刪除默認網關,並將gw2設為默認網關
15 until ping -c 1 $gw1 &> /dev/null //進入第二個循環繼續ping主網關。until循環是測試條件不成立會繼續循環,即ping不通繼續ping
16 do
17 sleep 1 //ping不通會會休眠一秒。然後接著ping
18 done //ping通了就結束循環,又重新進入死循環進行的操作。就是刪除默認網關,並gw1為默認網關
19 done
20 ) & //將腳本裡的命令加入後台執行