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是不是也会卡死?
页: 1 [2] 3 4 5
查看完整版本: PCC断线自动修改脚本遇到问题,寻找解决的方法。