歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux使用shell自動切換網關

編寫名為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 ) &    //將腳本裡的命令加入後台執行

Copyright © Linux教程網 All Rights Reserved