找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: zh1000000

[脚本] PCC断线自动修改脚本遇到问题,寻找解决的方法。

[复制链接]
 楼主| 发表于 2016-8-9 09:44:26 | 显示全部楼层
监测pppoe的status状态会不会更准确些?

点评

不過我再依您想法設個檢定status=connected的script,您再回報測試結果  发表于 2016-8-9 10:18
結果應該會差不多. 就算status=conected ,也不能保證pppoe是絕對可用的狀態.  发表于 2016-8-9 10:06
routeros
回复

使用道具 举报

发表于 2016-8-9 10:37:08 | 显示全部楼层
本帖最后由 cspm333 于 2016-8-9 11:11 编辑

script:

:for i from=1 to=3 \
    do={:local array [/ip firewall mangle find comment="pcc$i"]
             /interface pppoe-client monitor "pppoe-out$i" once \
                do={:if ($status="connected") \
                            do={:if ([/ip firewall mangle get $array new-routing-mark]!="L$i") \
                                        do={/ip firewall mangle set $array new-routing-mark="L$i"}} \
                            else={:if ([/ip firewall mangle get $array new-routing-mark]!="L$($i+3)") \
                                         do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}}}}

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

使用道具 举报

 楼主| 发表于 2016-8-9 10:50:32 | 显示全部楼层
cspm333 发表于 2016-8-9 10:37
script:

:for i from=1 to=3 \

好的,我试试
routeros
回复

使用道具 举报

 楼主| 发表于 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吗?现在好像是断哪改哪。

点评

script從一開始就以斷那改那設計,非是斷光纖之一就全換adsl  发表于 2016-8-9 11:24
應該要可修改才行,您用命令視窗執行.看小弟的script錯在那一行.  发表于 2016-8-9 11:22
routeros
回复

使用道具 举报

 楼主| 发表于 2016-8-9 13:09:27 | 显示全部楼层
cspm333 发表于 2016-8-9 10:37
script:

:for i from=1 to=3 \

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

使用道具 举报

 楼主| 发表于 2016-8-9 13:11:18 | 显示全部楼层
本帖最后由 zh1000000 于 2016-8-9 13:13 编辑

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

使用道具 举报

发表于 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 [/ip firewall mangle find comment="pcc$i"]
            :if ($connect) \
                do={:if ([/ip firewall mangle get $array new-routing-mark]!="L$i") \
                            do={/ip firewall mangle set $array new-routing-mark="L$i"}} \
                else={:if ([/ip firewall mangle get $array new-routing-mark]!="L$($i+3)") \
                             do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}}}
}

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

routeros
回复

使用道具 举报

 楼主| 发表于 2016-8-9 21:19:16 | 显示全部楼层
cspm333 发表于 2016-8-9 13:56
#script:
{
:local connect true

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

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

点评

就依您的想法編script ,總之實測結果就等您答案了.  发表于 2016-8-9 22:03
routeros
回复

使用道具 举报

 楼主| 发表于 2016-8-9 22:29:50 | 显示全部楼层
cspm333 发表于 2016-8-9 13:56
#script:
{
:local connect true

好的,我也期待结果如何
routeros
回复

使用道具 举报

 楼主| 发表于 2016-8-15 05:29:12 | 显示全部楼层
cspm333 发表于 2016-8-9 13:56
#script:
{
:local connect true

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

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


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

使用道具 举报

发表于 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 && [/ping www.baidu.com count=3 interface="pppoe-out$i"]>0)}}

:for i from=1 to=3 \
    do={:local array [/ip firewall mangle find comment="pcc$i"]
            :if ($connect) \
                do={:if ([/ip firewall mangle get $array new-routing-mark]!="L$i") \
                            do={/ip firewall mangle set $array new-routing-mark="L$i"}} \
                else={:if ([/ip firewall mangle get $array new-routing-mark]!="L$($i+3)") \
                             do={/ip firewall mangle set $array new-routing-mark="L$($i+3)"}}}
}


routeros
回复

使用道具 举报

 楼主| 发表于 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 [/interface pppoe-client find running=yes]]
:if ($x<$i) do={
:for ii from=1 to=$i do={
:set status [/interface get [find name=("pppoe-out".$ii)] running]
:if ($status=true) do={
/ip fir man set [find new-connection-mark=$ii] per-connection-classifier=("both-addresses:".$x."/".$y) disable=no;:set y ($y+1)} else={
/ip fir man set [find new-connection-mark=$ii] disable=yes}}}
:if ($x=$i) do={
:set z [:len [/ip fir man find action="mark-connection" disabled=yes chain=prerouting]]
:if ($z>0) do={
:for ii from=1 to=$i do={
/ip fi man set [find new-connection-mark=$ii] per-connection-classifier=("both-addresses:".$x."/".$y) disable=no;:set y ($y+1)}}}}


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

点评

這script不合乎您的需求,因為它只判定PPPoE running ,卻無法驗證 PPPoE是否離線.  发表于 2016-8-16 15:10
routeros
回复

使用道具 举报

 楼主| 发表于 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生效。

点评

那關閉無法使用網絡 ,與開著卻無法使用網絡有區別嗎?  发表于 2016-8-16 23:47
檢測4-6沒意義,假設adsl檢測ping也沒過,script也把4-6關了...  发表于 2016-8-16 23:46
routeros
回复

使用道具 举报

 楼主| 发表于 2016-8-17 00:03:10 | 显示全部楼层
好吧。尊重你的意见。 还是要再一次感谢您的热心帮助,谢谢。
routeros
回复

使用道具 举报

 楼主| 发表于 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,可行不?
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-22 07:12 , Processed in 0.064724 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表