zh1000000 发表于 2016-8-9 09:44:26

监测pppoe的status状态会不会更准确些?

cspm333 发表于 2016-8-9 10:37:08

本帖最后由 cspm333 于 2016-8-9 11:11 编辑

script:

:for i from=1 to=3 \
    do={:local array
             /interface pppoe-client monitor "pppoe-out$i" once \
                do={:if ($status="connected") \
                            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)"}}}}

ps:
script每行開頭加# ,代表整行都是註解.
但標示的內容裡面含 ")"與"}"與"""與"\"時要小心 ,一旦加#下去等於前面的流程未結束.
接下來只會呵呵 ,script整個廢了...

zh1000000 发表于 2016-8-9 10:50:32

cspm333 发表于 2016-8-9 10:37
script:

:for i from=1 to=3 \


好的,我试试

zh1000000 发表于 2016-8-9 11:15:54

cspm333 发表于 2016-8-9 10:37
script:

:for i from=1 to=3 \


换成status检测,修改不了,没反应。换回最后一次正常的脚本,发现了另一个问题。不知道是不是操作太频繁,pppoe2的账号被卡死,拨不上号。这时发现mark参数改成了对应的L5,但是其他L1和L3没有跟着改。结果L5上传瞬间被占满了,才1m不到的上传。

流程不应该是检测到pppoe1-3任意一路断线则全部切换mark为L456吗?现在好像是断哪改哪。

zh1000000 发表于 2016-8-9 13:09:27

cspm333 发表于 2016-8-9 10:37
script:

:for i from=1 to=3 \


放窗口也试不了,按了回车就出。。。然后什么反应都没有,不管它了。只能劳烦你再帮改改了。
就是pppoe1-3随意掉一路,全换AD,光纤正常自动恢复,重拨也不用了。现在工作时间,用的人比较多,不方便操作。

zh1000000 发表于 2016-8-9 13:11:18

本帖最后由 zh1000000 于 2016-8-9 13:13 编辑

因为1-3是同一线路进来,如果只换一路,由于pcc的原因会断流的。任意一路断,那其余的也会陆续断,只是卡死还没释放而已。既然这样,断任意一路,马上切就可以忽略这个等待的问题了。再配合PCC自动切换的脚本,应该算是保障比较到位了。

cspm333 发表于 2016-8-9 13:56:56

本帖最后由 cspm333 于 2016-8-9 14:37 编辑

zh1000000 發表於 2016-8-9 13:11
因為1-3是同一線路進來,如果只換一路,由於pcc的原因會斷流的。任意一路斷,那其餘的也會陸續斷,只是卡死 ...
#script:
{
:local connect true
:for i from=1 to=3 \
    do={/interface pppoe-client monitor "pppoe-out$i" once \
               do={:set connect ($connect && $status="connected")}}

:for i from=1 to=3 \
    do={:local array
            :if ($connect) \
                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)"}}}
}

註:
第一行的"{" ,與最後一行的"}" ,代表script的起始 與結束,
放在script內您可選擇保留或刪除皆可 ; 若是貼在文字視窗模擬則一定要保留,否則文字視窗內宣告參數時會出錯.

zh1000000 发表于 2016-8-9 21:19:16

cspm333 发表于 2016-8-9 13:56
#script:
{
:local connect true


好的,收到明白!非常感谢,明天晚上抽个时间过去弄弄看。远程不敢操作,心里没底,哈。

这次不用ping命令了?监测status是不是更直观,更准确些?

zh1000000 发表于 2016-8-9 22:29:50

cspm333 发表于 2016-8-9 13:56
#script:
{
:local connect true


好的,我也期待结果如何

zh1000000 发表于 2016-8-15 05:29:12

cspm333 发表于 2016-8-9 13:56
#script:
{
:local connect true


等了几天,论坛终于恢复了,阿弥陀佛。

脚本我试过了,证明不可行,因为在断网的同一故障下status还是属于connected状态。所以对比之下还是一开始检测ping的方法更为直观,快速。


还有劳兄台帮修改一下ping的脚本,1-3任意一条断,直切AD4-6。不需要重拨,感谢。

cspm333 发表于 2016-8-15 20:03:35

本帖最后由 cspm333 于 2016-8-15 22:39 编辑

zh1000000 發表於 2016-8-15 05:29
等了幾天,論壇終於恢復了,阿彌陀佛。

腳本我試過了,證明不可行,因為在斷網的同一故障下status還是 ...
3個PPPoE 的status與ping檢測同時並進,100%全合格才能使用光纖;
過程只要有任一個檢測呈現false ,結局就是全切換成adsl...

{
:local connect true
:for i from=1 to=3 \
    do={/interface pppoe-client monitor "pppoe-out$i" once \
               do={:set connect ($connect && $status="connected")}}

:if ($connect) \
    do={:for i from=1 to=3 \
            do={:set connect ($connect && www.baidu.com count=3 interface="pppoe-out$i"]>0)}}

:for i from=1 to=3 \
    do={:local array
            :if ($connect) \
                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)"}}}
}


zh1000000 发表于 2016-8-16 02:55:25

cspm333 发表于 2016-8-15 20:03
3個PPPoE 的status與ping檢測同時並進,100%全合格才能使用光纖;
過程只要有任一個檢測呈現false ,結局就 ...
经测试,非常完美,断线三条规则秒切。恢复的时候只能一条一条恢复,但是达到目的了,这点细节可以忽略,非常开心,万分感谢。

再问下PCC的那个,为了保险,我打算重新启用PCC掉线自动更改参数脚本。但是AD的稳定性不如光纤,随时也有可能掉一条什么的。因为不是很懂脚本语言,有些细节还需要兄台指点。我以前用的是论坛的脚本,一直正常,换光纤以后就没使用了。

{
:local status
:local i "3"
:local x "0"
:local y "0"
:local z "0"
:set x [:len ]
:if ($x<$i) do={
:for ii from=1 to=$i do={
:set status running]
:if ($status=true) do={
/ip fir man set per-connection-classifier=("both-addresses:".$x."/".$y) disable=no;:set y ($y+1)} else={
/ip fir man set disable=yes}}}
:if ($x=$i) do={
:set z [:len ]
:if ($z>0) do={
:for ii from=1 to=$i do={
/ip fi man set per-connection-classifier=("both-addresses:".$x."/".$y) disable=no;:set y ($y+1)}}}}


如上,这个status是共用的吗?会不会跟你帮我做这个脚本起冲突?还是这个量单单就只用在这个脚本上?因为我原来的标记是纯数字的,这段时间测试的缘故才在mark加了L,那这个脚本就肯定不起作用了。您看看怎么改,只检测AD4-6,MARK值前加L。

zh1000000 发表于 2016-8-16 21:44:09

cspm333 发表于 2016-8-15 20:03
3個PPPoE 的status與ping檢測同時並進,100%全合格才能使用光纖;
過程只要有任一個檢測呈現false ,結局就 ...

早期监测AD时用这个脚本就够了,按您的意思,为了更保险,连AD4-6的ping状态也要监测?

其实我要表达的就是光纤任一断,切AD。如果AD运行过程中有不正常的线路用脚本更改AD线路PCC参数。但更改只对AD4-6生效。

zh1000000 发表于 2016-8-17 00:03:10

好吧。尊重你的意见。 还是要再一次感谢您的热心帮助,谢谢。

zh1000000 发表于 2016-8-18 02:36:51

cspm333 发表于 2016-8-15 20:03
3個PPPoE 的status與ping檢測同時並進,100%全合格才能使用光纖;
過程只要有任一個檢測呈現false ,結局就 ...

还是帮我改回监测running状态吧,掉线切不了,要等pppoe自己断开了才有效。看来您原来的想法是对的,running+ping。监测status的状态,因为它为首要,链接状态下切换不了,我是这么理解。如果是running状态会不会也是这样。如果都抛开,直接就单单监测ping,然后指定pppoe-out1出口,只要不通就切换AD,可行不?
页: 1 2 [3] 4 5
查看完整版本: PCC断线自动修改脚本遇到问题,寻找解决的方法。