Меню
Контакты
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Как провести учёт пользователей силами только Mikrotik Router OS. Часть вторая

 19 Мар 2012    MikroTik, Практика и программирование MikroTik

Выполним обработку данных для всех пользователей при помощи цикла for.

 

Mikrotik RouterBoard RB751U-2HnD, список правил

Рис.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;} – выполняем действия над полученными данными.

  

Как провести учёт пользователей силами только Mikrotik Router OS

Рис.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"};}

 

Как провести учёт пользователей силами только Mikrotik Router OS

Рис.3. Mikrotik RouterBoard RB751U-2HnD, проверка новых данных.

 

:if ($c<0) do={put "RUN"};} - выполняем проверку новых данных. Если в результате значение окажется меньше нуля, то выполняем действия.

 

Евгений Рудченко специально для ASP24.