linux 自动切换网关,多网关自动切换
多网关自动切换,当网关失效时自动切换到下一个网关服务器,当第一个网关恢复后切换回第一个网关。
#! /bin/bash
#网关列表信息
gws=(192.168.4.113 192.168.4.2 192.168.3.2);
# 切换网关
function chgGateway(){
gateway=$1;
route del default;
route add default gw $gateway;
}
while (( 1 == 1 )); do
defr=`route|grep default|awk '{print $2}'`;
while ping -c 1 g.cn &> /dev/null ; do
# 当第一个网关恢复后 切换回第一个网关
if [[ $defr != $gws ]]; then
if ping -c 1 $gws &> /dev/null ; then
chgGateway $gws
fi
fi
sleep 3;
done
for gw in ${gws[@]}; do
if ping -c 1 $gw &> /dev/null ; then
chgGateway $gw;
break;
else
continue;
fi
done
sleep 1;
done