zh1000000
发表于 2016-8-5 04:00:30
cspm333 发表于 2016-8-5 03:58
傻瓜script ,總沒道理錯誤吧
:if (>0) \
这样就能改,好奇怪。什么原因呢?
好像最后这个修改的句柄没有恢复的语句吧,是吗
47771885
发表于 2016-8-5 11:39:23
如过在用的PCC 脚本可以正常工作的话 个人认为不需要改动
仅对线路通断进行判断并使其重播至可用即可
当然也可以在附件脚本中增加 操作同时 调度pcc 程式
zh1000000
发表于 2016-8-5 11:52:40
好的,感谢阿湘的热心解答,昨晚跟这位兄台磨了一晚,还是没解决问题。起床吃个午饭,继续摸。
cspm333
发表于 2016-8-5 13:04:06
本帖最后由 cspm333 于 2016-8-5 13:18 编辑
zh1000000 發表於 2016-8-5 11:52
好的,感謝阿湘的熱心解答,昨晚跟這位兄台磨了一晚,還是沒解決問題。起床吃個午飯,繼續摸。
小弟猜會不會是"字串"的問題,把("L".($i+3)) 換"L$($i+3)"試試.
:for i from=1 to=3 \
do={
:local array
:if (www.baidu.com count=3 interface="pppoe-out$i"]>0) \
do={:if (!="L$i") \
do={/ip firewall mangle set $array new-routing-mark="L$i"}} \
else={:if (!="L$($i+3)") \
do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}
/interface enable "pppoe-out$i"}
}
zh1000000
发表于 2016-8-7 18:26:07
cspm333 发表于 2016-8-5 13:04
小弟猜會不會是"字串"的問題,把("L".($i+3)) 換"L$($i+3)"試試.
:for i from=1 to=3 \
:if (www.baidu.com count=3 interface="pppoe-out$i"]>0)这句我还不是很理解,大于0这个参数是从哪里体现出来的。
像我下面这个手动测试百度的包里,有个断流的timeout,这个会不会引起脚本的误判?如果是这样,那路由器不是很累。还有一个切换回来怎么实现呢?比如现在已经成功切换到备用线路了。脚本还在运行中的。那默认的ping肯定是通的,是不是要再建一个脚本侦测pppoe-out1来实现?
HOST SIZE TTL TIMESTATUS
14.215.177.37 5656 18ms
14.215.177.37 5656 17ms
14.215.177.37 timeout
sent=3 received=2 packet-loss=33% min-rtt=17ms avg-rtt=17ms max-rtt=18ms
zh1000000
发表于 2016-8-8 13:52:16
cspm333 发表于 2016-8-5 13:04
小弟猜會不會是"字串"的問題,把("L".($i+3)) 換"L$($i+3)"試試.
:for i from=1 to=3 \
又一个通宵试了很多次,确定脚本不能用,放弃了。有空再研究吧。不知道为什么,我总觉得这句有问题。
:if (www.baidu.com count=3 interface="pppoe-out$i"]>0) \
cspm333
发表于 2016-8-8 14:03:04
zh1000000 发表于 2016-8-8 13:52
又一个通宵试了很多次,确定脚本不能用,放弃了。有空再研究吧。不知道为什么,我总觉得这句有问题。
:i ...
不會有問題,因為經得起驗證:)
zh1000000
发表于 2016-8-8 14:28:15
cspm333 发表于 2016-8-8 14:03
不會有問題,因為經得起驗證
因为在log里看不到,如果是出错应该有提示的。但是死活改不了mark值。如果我要一句一句的测试,是不是都要用到像你截图的这个put命令?
zh1000000
发表于 2016-8-8 14:36:10
cspm333 发表于 2016-8-8 14:03
不會有問題,因為經得起驗證
我又按你截图的方法试了一下,确实是错误。
expected end of command (line 1 column 57)提示这个。
你的是6.X的,语法或者命令是不是不通用。唯一能想到这个了
zh1000000
发表于 2016-8-8 14:44:36
确实,不加>0就测试通过,加了就会出现expected end of command (line 1 column 57)。
看来我怀疑的还是对的,应该是版本的语法问题。
zh1000000
发表于 2016-8-8 16:06:41
cspm333 发表于 2016-8-8 14:03
不會有問題,因為經得起驗證
好吧,复制带括弧这段再试是正常的结果了,跟你的截图是一样的。
还是不能切换,到底会是神马原因,头大
zh1000000
发表于 2016-8-9 07:38:54
cspm333 发表于 2016-8-8 14:03
不會有問題,因為經得起驗證
朋友,还是这句ping命令,反复验证后发现,只要是断线状态下,这句是不起作用的。
cspm333
发表于 2016-8-9 08:56:30
zh1000000 发表于 2016-8-9 07:38
朋友,还是这句ping命令,反复验证后发现,只要是断线状态下,这句是不起作用的。
pppoe的檢測似乎是必要過程...省缺不了:o
修改後的script:
:for i from=1 to=3 \
do={
:local array
:if () \
do={:if (www.baidu.com count=3 interface="pppoe-out$i"]>0) \
do={:if (!="L$i") \
do={/ip firewall mangle set $array new-routing-mark="L$i"}} \
else={:if (!="L$($i+3)") \
do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}
/interface enable "pppoe-out$i"}} \
else={:if (!="L$($i+3)") \
do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}
/interface enable "pppoe-out$i"}
}
zh1000000
发表于 2016-8-9 09:16:24
cspm333 发表于 2016-8-9 08:56
pppoe的檢測似乎是必要過程...省缺不了
修改後的script:
这次成功了,达到秒改的效果。找到原因真好。意思是必须判定检测的线路为running状态,然后ping命令为辅助检测,只要两者不满足就切。是这样理解吗?
还有我想去掉重新拨号这句应该怎么删除还是直接在那句前面加#?我觉得没必要,因为断线以后会一直保持拨号状态的,然后脚本运行时间我选择了30秒,应该不算太频繁吧。
zh1000000
发表于 2016-8-9 09:41:08
cspm333 发表于 2016-8-9 08:56
pppoe的檢測似乎是必要過程...省缺不了
修改後的script:
:for i from=1 to=3 \
do={
:local array
:if () \
do={:if (www.baidu.com count=3 interface="pppoe-out$i"]>0) \
do={:if (!="L$i") \
do={/ip firewall mangle set $array new-routing-mark="L$i"}} \
else={:if (!="L$($i+3)") \
do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}
# /interface enable "pppoe-out$i"}} \
else={:if (!="L$($i+3)") \
do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}
# /interface enable "pppoe-out$i"}
}
请问是不是这样,那句重拨就不工作了?还有个问题就是,如果现在是检测running状态,但是掉线的时候pppoe的状态还是running的啊,只是还没挂断而已,那这个时候ping是不是也会卡死?