终极ROS单IP动态限速脚本(带中文注释)
#定义变量#脚本停止开关
:global IsRun true
#当前下行总流量变量
:global RxCurRate 1000000
#当前限定的单IP下行带宽
:global RxCurSet 5000000
#单IP最大下行带宽
:global RxMaxRate 8000000
#单IP最小下行带宽
:global RxMinRate 1000000
#总下行流量阀值
:global RxSwRate 18000000
#当前上行总流量变量
:global TxCurRate 1000000
#当前限定的单IP上行带宽
:global TxCurSet 5000000
#单IP最大上行带宽
:global TxMaxRate 8000000
#单IP最小上行带宽
:global TxMinRate 1000000
#总上行流量阀值
:global TxSwRate 18000000
#带宽变动步进值
:global StepRate 500000
#合法用户地址列表名称
:global ListName "userlist"
:while ($IsRun) do={
#取得当前下行总流量
/interface monitor-traffic wan once do={:set RxCurRate $received-bits-per-second}
#取得当前上行总流量
/interface monitor-traffic wan once do={:set TxCurRate $sent-bits-per-second}
#设置单IP下行带宽新值
:if ($RxCurRate<$RxSwRate) do={
:if ($RxCurSet<$RxMaxRate) do={
:set RxCurSet ($RxCurSet + $StepRate)}
} else={
:if ($RxCurSet>$RxMinRate) do={
:set RxCurSet ($RxCurSet + -$StepRate)}}
#设置单IP上行带宽新值
:if ($TxCurRate<$TxSwRate) do={
:if ($TxCurSet<$TxMaxRate) do={
:set TxCurSet ($TxCurSet + $StepRate)}
} else={
:if ($TxCurSet>$TxMinRate) do={
:set TxCurSet ($TxCurSet + -$StepRate)}}
#应用新的单IP上下行带宽限定值到QUEUE
#取得合法用户地址列表中地址数
:local AddCount ( - 1)
#循环变量
:local i 10
#临时存放地址列表名的变量
:local tlist
#临时存放地址的变量
:local tadd
:for i from=0 to=$AddCount do={
:set tlist
:set tadd
:if ($tlist = $ListName) do={
:if ([:len ] > 0) do={
/queue simple set $tadd limit-at=[:tostr ($RxCurSet . "/" . $TxCurSet)]max-limit=[:tostr (($RxCurSet * 2) . "/" . ($TxCurSet * 2))]
} else={
/queue simple add name=$tadd dst-address=$tadd limit-at=[:tostr ($RxCurSet . "/" . $TxCurSet)]max-limit=[:tostr (($RxCurSet * 2) . "/" . ($TxCurSet * 2))]
}
}
}
#循环间隔时间(3分种)
:delay 3m
} 正在测试看看 看不懂呀。
页:
[1]