|
马上注册成为ROSABC会员,随时发帖回复。
您需要 登录 才可以下载或查看,没有账号?会员注册
x
2009-2-28 01:24 上传
下载附件 (140.82 KB)
受到一些帖子的启发,做了个断线电话报警的程序,如图
说明:
:set NAME "CNC-ADSL" //被检测的ADSL接口名字
:if([/interface get [find name=$NAME] running]) do={ //检测该接口是否断线
/interface set $NAME comment="0" //未断线,在备注里做上状态标志0,当全局变量备用
} else={ //检测到断线了
:set A [:tonum([/interface get $NAME comment])] //取备注里原来的状态标志
:if($A=0) do={ //原来的标志是0,说明是第一次断线,要打电话给管理员
/interface ppp-client enable PPP-OUT //用拨号设备拨号,只能做到电话响,接电话没反应
:delay 60s //拨号最多持续1分钟,因为电话是1分钟没接就断线
/interface ppp-client disable PPP-OUT //关闭拨号设备,挂断电话
}
:set A ($A+1) //检测到的故障次数标志计数器+1,避免不停的拨电话
:if($A>=10) do={:set A 0} //如果计数器达到指定次数10次,则复位,再次拨电话
/interface set $NAME comment=[:tostr($A)] //把计数器值写入备注保存备用
}
根据类似的思路,稍加改造就可以做不同的扩展,以适应具体的要求
这里用Winbox界面做,是比较直观方便新手理解,熟悉脚本的人也可以做成全脚本的
这里只能做到拨电话,期待哪位高手做到接电话后有语音提示,或者哪位可以做到发送短信
经测试发现一个小问题,当ADSL线路在连线的时候,写入备注,会短暂的中断连接,因此对脚本在做点改进:
:set DSL_NA "CNC-ADSL" //被检测的ADSL接口名字
:set TEL_NA "PPP-OUT" //用来拨电话的接口名字
:set A ([:tonum([/interface get $TEL_NA comment])] +1) //取拨号备注里的计数器值并+1,动拨号设备不影响正常使用
:if([/interface get [find name=$DSL_NA] running]) do={ //检测ADSL是否在正常运转
:if($A>1) do={/interface set $TEL_NA comment="0"} //在拨号备注里记录计数器值,0表示无错误,当全局变量备用
} else={ //检测到断线了,第一拨电话,10次还没解决则再拨电话
:if($A>10) do={:set A 1} //连续10次还是断线时,重置计数器,使得可以再次拨电话
:if($A=1) do={ //第一次断线,则拨管理员电话,否则不拨,给管理员一个处理时间
/interface ppp-client enable $TEL_NA //用拨号设备拨电话,只能做到电话响,接电话没反应
:delay 60s //等待1分钟,因为电话是1分钟没接就断线
/interface ppp-client disable $TEL_NA //关闭拨号设备,挂断电话
}
/interface set $TEL_NA comment=[:tostr($A)] //把计数器值写入备注供下次使用
}
使用的时候请去掉注释,我换不知道ROS软路由脚本用什么做注释
想使用全局变量来保存计数器,但总是不成功,只好变通的放在设备的备注里了
知道的请指点一下
刚学ROS软路由两天,这知识学习过程中的一个趣味练习而已 |
|