Доброго дня! Пробовал сделать скрипт, урезающий скорость в simple queue , но возникла внезапная проблема, похоже, что немного изменился синтаксис. Брал идею тут https://wiki.mikrotik.com/wiki/Limiting_a_user_to_a_given_amount_of_traffic_II но вот это Код: :set traf [get [find target-addresses=("192.168.1." . $i)] total-bytes] не работает во-первых ругается на target-addresses, при этом понимает просто target= , ну и, похоже, что такое total-bytes тоже не знает. Конструкция Код: :set traf [get [find target=("192.168.1." . $i)] total-bytes] всегда выдает нули Вообщем, прошу помощи гуру ...
global z [/queue simple get [find target="192.168.21.0/24"] bytes] вот так работает, только если нули в это поле получите no such item
Код: :local traf; /queue simple :for i from=1 to= 254 do= { :if ([/queue simple find target=("192.168.1.$i/32")] != "") do={ :set traf [get [find target=("192.168.1.$i/32")] total-bytes] :if ($traf > 1048) do= { set [find target=("192.168.1.$i/32")] max-limit= 64000/64000 } } } попробуй так
Ну как-то так: Код: :local traffic; :local ipaddr; /queue simple :log info "script started" :for i from=60 to=100 do= { :set ipaddr [("192.168.4.$i/32")]; :if ([find target=$ipaddr] != "") do= { :set traffic [get [find target=$ipaddr] bytes]; :local posSlash [:find $traffic "/" -1] :local trafficlen [:len $traffic] # :local UpTraff [:pick $traffic 0 $posSlash]; # :local UpTrafflen [:len $UpTraff] :local DownTraff [:pick $traffic ($posSlash+1) $trafficlen] :if ($DownTraff > 524288000) do= { set [find (target=$ipaddr)] limit-at=32k/64k max-limit=32k/64k; } } } То что в колонках винбокса в очереди называется "total downloaded bytes" и "total uploaded bytes" в свойствах самой очереди называется просто "bytes" , а параметр total bytes, похоже, относится к другому и всегда у меня показывает нули. Вот зачем такую путаницу придумали, непонятно