YiPing 发表于 2016-6-29 14:10:17

netwatch脚本咨询

本帖最后由 YiPing 于 2016-6-29 14:35 编辑

ros有个netwatch功能,也就是如果检测到网络通或者断,触发某个操作。
现在我想增加一个功能,就是当网络被检测到断的时候,产生一个变量,等10秒以后,再次检测这个变量,如果变量值依旧不变,那么再触发脚本。
当网络被检测到通的时候,就修改这个变量,使得不触发相关脚本。
这个怎么写?

xuxi3201 发表于 2016-6-29 18:41:32

本帖最后由 xuxi3201 于 2016-6-29 18:43 编辑

比如触发的脚本是dis-queue
你就在这个 dis-queque 脚本最后增加3行


禁用脚本 dis-queue
:delay 10
启用脚本 dis-queue

YiPing 发表于 2016-6-29 21:08:17

你没理解意思呢!

netwatch是如果检测到网络断,那么就执行A脚本,如果检测到网络恢复,就执行B脚本。
但有时候,网络只是偶尔掉包,却触发了A脚本,虽然很快又执行B脚本恢复业务,但这中间毕竟会有中断。

所以我是想要这个效果:
检测到网络断,生成变量A=0,等10秒后,检查变量A是否还是0,如果依旧是0,则表示网络未恢复,执行A脚本。
检测到网络恢复,将变量A=1,这样如果网络只是偶尔丢包,也不会触发A脚本,不会产生业务中断。

xuxi3201 发表于 2016-6-29 22:19:19

你改一下“脚本A””脚本B”最前面添加:
:delay 10
:if(ping 网关      失败)   do={原来内容}

YiPing 发表于 2016-6-30 08:37:41

xuxi3201 发表于 2016-6-29 22:19
你改一下“脚本A””脚本B”最前面添加:
:delay 10
:if(ping 网关      失败)   do={原来内容}

我要脚本例子,而不是逻辑,比如ping 网关 失败,用程序怎么写?如果写逻辑流程图模板,都会写。

谢谢

fcooqdei 发表于 2016-7-3 14:55:19

本帖最后由 fcooqdei 于 2016-7-3 14:57 编辑

lz我猜你想要的是这个吧
local a
/log info $a

ping通几次,$a 就是几


再补充一个:
local a
/log info $a

if (\$a = 0) do={
XXX脚本
}
这个 就是连续ping10次,间隔0.5s,要是都不通的话,再执行。。。。

YiPing 发表于 2016-7-3 19:35:15

谢谢,你这个脚本测试了,确实解决了我的问题。

taiyeelong 发表于 2016-7-7 23:53:55

你好!请问你们使用的是什么版本,我使用的是6.34.4,为什么脚本不能用呢?是因为版本还是我抄弄错了什么呢???请大家帮我纠正一下,谢谢大家的帮忙。
我把脚本放在Netwatch如果检测到网络断就执行的地方,每15分钟检测一次。
我想要如果检测到网络断后就执行脚本,脚本是等15秒后再一次检查网络是否ping得通,如果依旧是ping不通就执行重启ppp-out1,ping通就不执行。


local a
/log info $a
if (\$a = 0) do={/interface enable ppp-out1}


xuxi3201 发表于 2016-7-8 08:38:43


local a
/log info $a
if ($a = 0) do={/interface enable ppp-out1}

.
我去掉一个 \
6.34.6 测试通过

taiyeelong 发表于 2016-7-8 11:26:53

谢谢!xuxi3201大大的帮忙,你这个脚本已测试可以在我的RB951上执行。
页: [1]
查看完整版本: netwatch脚本咨询