Выполним обработку данных для всех пользователей при помощи цикла for.
Рис.1. Mikrotik RouterBoard RB751U-2HnD, список правил.
На рисунке 1 мы видим список правил правил с комментариями, для которых необходимо выполнить действия.
Скрипт обхода правил в цикле:
: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); :put $c;}
Описание:
:local r; - создаём локальную переменную r;
:local all ([/ip fi a print count-only] -1); - создаём локальную переменную all, подсчитываем общее количество правил и отнимаем единицу (поскольку нумерация правил начинается с нуля).
:for y from=0 to=$all do={:set r [/ip fi a get value-name=comment number=$y]; - извлекаем данные из комментариев в цикле for;
:local c ($r-100); :put $c;} – выполняем действия над полученными данными.
Рис.2. Mikrotik RouterBoard RB751U-2HnD, результат работы.
В результате выполнения предыдущих действий видно, что у двух пользователей - отрицаельный баланс. Когда скрипт работает в реальной ситуации, он должен сам определять у кого отрицательный баланс, а у кого - нет. И, на основании этих данных, принимать решения.
Итак, необходимо определять пользователей с нулевым балансом. Для этого воспользуемся оператором IF:
: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={put "RUN"};}
Рис.3. Mikrotik RouterBoard RB751U-2HnD, проверка новых данных.
:if ($c<0) do={put "RUN"};} - выполняем проверку новых данных. Если в результате значение окажется меньше нуля, то выполняем действия.
Евгений Рудченко специально для ASP24.