OpenBSD下PF双线带链路检测
一段简单的检测线路是否通,然后自动load入PF规则[code]#!/bin/sh#Man1和MAN2的网关
gw1=AA.AA.AA.AA
gw2=BB.BB.BB.BB
#默认规则,Man1,MAN2等规则
PF_Default=/etc/pf.conf
PF_Man1=/etc/pf/pf_man1.conf
PF_Man2=/etc/pf/PF_man2.conf
#记录链路状态和线路故障的事件
Link_State=/etc/pf/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 #MAN1 的线路通
echo $L_State > $Link_State
fi
else
if ping -c1 -w1 $gw2 >/dev/null 2>&1
then
L_State=0 # MAN2 通
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_Default
;;
1)
echo "Link MAN1 is UP! Link MAN2 is Down at `date`!" >> $Link_State_Log
#单线路时对默认路由的修改
route delete default
route add default $gw1
pfctl -f $PF_Man1
;;
0)
echo "Link MAN1 is Down ! Link MAN2 is UP at `date`!" >> $Link_State_Log
#cat /root/wu/route | xargs -L 1 route delete #删除某些MAN2
route delete default
route add default $gw1
pfctl -f $PF_Man2
;;
-1)
echo "All Link is Down at `date`!" >> $Link_State_Log
;;
esac
fi[/code]把以上文件保存为:
pf_monitor.sh
修改权限:
chmod +x pf_monitor.sh
然后在 /var/cron/tabs/root 加入以下:
* * * * * root /etc/pf_monitor.sh 看的不太懂 没看懂
页:
[1]
