分类:
2008-08-06 11:36:27
#!/bin/sh
#write by loulancn#163.com
#定义两个出口的网关
gw1=192.168.6.1
gw2=192.168.15.1
#负载均衡和单线路故障时的pf规则
PF_Load_Balance=/etc/pf/PF_Load_Balance.conf
PF_Lan1=/etc/pf/PF_Lan1.conf
PF_Lan2=/etc/pf/PF_Lan2.conf
#记录链路状态和线路故障的事件
Link_State=/etc/Link_State
Link_State_Log=/var/log/Link_State_Log
#获取上一次的状态值
Previously_Link_State=`cat $Link_State`
#程序开始
if ping -c1 -W1 $gw1 >/dev/null 2>&1
then
if ping -c1 -W1 $gw2 >/dev/null 2>&1
then
L_State=2
echo $L_State > $Link_State
else
L_State=1
echo $L_State > $Link_State
fi
else
if ping -c1 -W1 $gw2 >/dev/null 2>&1
then
L_State=0
echo $L_State > $Link_State
else
L_State=-1
echo $L_State > $Link_State
fi
fi
if [ $Previously_Link_State -eq $L_State ]
then
echo " Link State Not Change !"
else
case $L_State in
2)
echo "All Link is UP at `date`! " >> $Link_State_Log
pfctl -f $PF_Load_Balance
;;
1)
echo "Link $gw1 is UP! Link $gw2 is Down at `date`!" >> $Link_State_Log
#单线路时对默认路由的修改
route delete default
route add default $gw1
pfctl -f $PF_Lan1
;;
0)
echo "Link $gw1 is Down ! Link $gw2 is UP at `date`!" >> $Link_State_Log
route delete default
route add default $gw1
pfctl -f $PF_Lan2
;;
-1)
echo "All Link is Down at `date`!" >> $Link_State_Log
;;
esac
fi