В этой статье мы рассмотрим окончательный вариант скрипта:
:local a; :local r;
:local all ([/ip fi a print count-only] -1);
:for y from=0 to=$all do={:set r [/ip fi a get value-name=comment number=$y]; :local c ($r-100); :if ($c<0) do={:set a [/ip fi a get value-name=address number=$y; ]; /ip fi a set disabled=yes comment=$c [find address=$a]}
else={:set a [/ip fi a get value-name=address number=$y; ]; /ip fi a set comment=$c [find address=$a] }}; }
В конечном варианте добавлен оператор проверки условия IF ELSE.
if ($c<0) — выполняем проверку: если новый баланс меньше нуля, то выполняем DO;
do={:set a [/ip fi a get value-name=address number=$y; ]; — извлекаем значение IP-адреса для текущего правила;
/ip fi a set disabled=yes comment=$c [find address=$a]} — выполняем действия: отключение правила и изменение значения комментария.
Если новый баланс не меньше нуля, то выполняется оператор ELSE и меняется комментарий для данного правила:
else={:set a [/ip fi a get value-name=address number=$y; ]; /ip fi a set comment=$c [find address=$a] }};
Рис.1. Mikrotik RouterBoard RB751U-2HnD. Список правил.
На рисунке 1 видно, что есть 4 правила с комментариями. В двух комментариях значение 100, а в двух 0.
Рис.2. Mikrotik RouterBoard RB751U-2HnD scripts.
Добавляем написанный скрипт в Mikrotik RouterBoard RB751U-2HnD для проверки.
Рис.3. Mikrotik RouterBoard RB751U-2HnD, запускаем скрипт.
В результате работы скрипта правила, у которых комментарии были со значениями ноль, получили отрицательное значения, и правило было отключено.
Рис.4. Mikrotik RouterBoard RB751U-2HnD второй запуск.
При каждом запуске скрипта будет отниматься значение указанной абонплаты и записываться новый баланс в комментарий.
Евгений Рудченко специально для ASP24.




