Скрипт выглядит так.
:local upload;
:local download;
:local totaltraf;
:local realtraff;
:local limit;
:set limit 5000;
:for y from=2 to=254 do={:local n; :set n "user$y"; :put $n; :set realtraff [/queue simple get "$n" byte]; :set upload [:pick $realtraff 0 ([:find $realtraff "/"]-1)]; :set download [:pick $realtraff ([:find $realtraff "/"]+1) [:len $realtraff]]; :set totaltraf (($upload + $download) / 1048576); :put $totaltraf; :if ($totaltraf >= $limit ) do={ /queue simple set [find name="$n"] max-limit="1M/1M"}}
Разбор скрипта.
:local upload;
:local download;
:local totaltraf;
:local realtraff;
:local limit;
:set limit 5000;
Создаются необходимые переменные и переменной «limit» присваивается нужное значение.
:for y from=2 to=254 do={:local n; :set n "user$y"; :put $n; :set realtraff [/queue simple get "$n" byte];
Извлекается значение о переданном и полученном трафике и заносится в переменную realtraff.
Рис.1. Количество трафика.
Значение трафика отображается в таком виде: 54634544/4543543. Левая часть – upload, правая – download. Для работы нам нужно получить целые числа.
:set upload [:pick $realtraff 0 ([:find $realtraff "/"]-1)];
:set download [:pick $realtraff ([:find $realtraff "/"]+1) [:len $realtraff]];
:set totaltraf (($upload + $download) / 1048576);
Складываем оба значения, переводим в мегабайты, и заносим в переменную totaltraf.
:if ($totaltraf >= $limit ) do={ /queue simple set [find name="$n"] max-limit="1M/1M"}
Производим сравнение. Если суммарный трафик равен или превышает лимит, то уменьшаем скорость для этого пользователя до 1-го Мбит/c.
Рис.2. Mikrotik RouteBoard RB493AH System Scheduler.
Переходим в планировщик System Scheduler.
Рис.3. Добавляем новый скрипт.
Добавляем скрипт в планировщик и выставляем интервал, через который будет срабатывать этот скрипт.
Рис.4. Работа скрипта.
У user110 явный перебор. Поэтому скрипт ограничил скорость только для этого пользователя. Нужно будет создать еще один скрипт, который будет выполняться один раз в сутки, обнулять статистику и возвращать правилам исходные значения.
Евгений Рудченко специально для asp24




