e_zhangiso 发表于 2019-10-4 15:08:11

自动修改PCC参数

以下是我在用的根据外网连接状况,自动修改PCC脚本,实测可以使用,但在运行中发现,当不满足脚本设定条件时,脚本也在执行,请大神请教下,也好造福大众.
{
:local status
:local i "3"
:local x "0"
:local y "0"
:local z "0"
:set x [:len ]
:set z [:len ]
:if ((($x<$i) && ($x<$z)) || (($x<$i) && ($x>$z))) do={
:for ii from=1 to=$i do={
:set status running]
:if ($status=true) do={
/ip fir man set per-connection-classifier=("both-addresses-and-ports:".$x."/".$y) disable=no;:set y ($y+1);/ip fir man set disable=no;/ip fir man set disable=no;/ip fir nat set disable=no} else={
/ip fir man set disable=yes;/ip fir man set disable=yes;/ip fir nat set disable=yes}}}
:if (($x=$i) && ($x>$z)) do={
:for ii from=1 to=$i do={
/ip fi man set per-connection-classifier=("both-addresses-and-ports:".$x."/".$y) disable=no;:set y ($y+1);/ip fi man set disable=no;/ip fir man set disable=no;/ip fir nat set disable=no}}}
}



cspm333 发表于 2019-10-4 22:17:57

本帖最后由 cspm333 于 2019-10-4 23:14 编辑

:local tel
:local con
:local dtor
:foreach i in= do={
:local run
:if ($run) do={:set dtor ($dtor+1)}

:set tel "$tel,$"
:set con "$con,$run"
}
:set tel [:pick $tel 1 [:len $tel]]
:set con [:pick $con 1 [:len $con]]

:local ntor -1
:foreach v,i in=[:toarray $tel] do={
:local run [:pick [:toarray $con] $v]
:if ($run) do={:set ntor ($ntor+1)}
:local pcc "both-addresses-and-ports:$dtor/$ntor"

:local mid
:local msw (!)
:if (!$run && $msw) do={/ip fi man disable $mid}
:if ($run && (!$msw || !=$pcc)) do={
/ip fi man set $mid per-connection-classifier=$pcc disabled=no}

:local nid
:local nsw (!)
:if (!$run && $nsw) do={/ip fi nat disable $nid}
:if ($run && !$nsw) do={/ip fi nat enable $nid}
}

e_zhangiso 发表于 2019-10-5 15:50:39

cspm333 发表于 2019-10-4 22:17
:local tel
:local con
:local dtor


干货满满,论坛有你更精彩,脚本始终运行的原因找到了,是我设定的一个参数不相符,导致条件一直满足!感谢

57068368 发表于 2019-10-5 20:25:54

顶一上。

qifeihn 发表于 2019-11-9 23:07:23

感谢大神 有没有单线多拨的断线修改PCC脚本

tony1441 发表于 2020-1-29 23:26:02

真的好东西
页: [1]
查看完整版本: 自动修改PCC参数