標籤: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 :dodone2、進入死迴圈後,在死迴圈裡面再嵌套兩個迴圈第一個迴圈while迴圈,就是ping主網關,能ping通就繼續ping,ping不通迴圈結束。就進入第二個迴圈進入第二個迴圈前先刪除預設閘道,換上備用網關3、進入第二個迴圈,是until迴圈,繼續ping主網關,ping不通就繼續ping,ping的通就結束迴圈,注意跟第一個迴圈的區別此時由於是死迴圈的原因,又重頭開始第一個迴圈,進入迴圈前需要先刪除預設閘道,換上主網關,這也是那兩個命令在開頭寫的原因[[email protected] 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不通繼續ping16 do 17 sleep 1 //ping不通會會休眠一秒。然後接著ping18 done //ping通了就結束迴圈,又重新進入死迴圈進行的操作。就是刪除預設閘道,並gw1為預設閘道19 done20 ) & //將指令碼裡的命令加入後台執行
本文出自 “落日餘暉” 部落格,請務必保留此出處http://whluwit.blog.51cto.com/2306565/1438147