编写名为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 ) & //将脚本里的命令加入后台执行
本文出自 “落日余晖” 博客,请务必保留此出处http://whluwit.blog.51cto.com/2306565/1438147
Linux使用shell自动切换网关,布布扣,bubuko.com
原文地址:http://whluwit.blog.51cto.com/2306565/1438147