Меню
Контакты
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
107023, Москва, пл. Журавлёва, 10с3, подъезд 31, офис 309
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Скрипт, извлекающий время подключения Wi-Fi клиентов Mikrotik RB к базовой станции

 24 Янв 2012    MikroTik, Scripts

 

В этой статье мы напишем скрипт, который будет извлекать данные о времени подключения беспроводных клиентов к базовой станции и, на основании этих данных, выполнять какие-либо действия. К примеру, можно ограничить скорость доступа после получаса работы.

Готовый скрипт:

while (true) do={:local creg [/in wi reg print count-only]; :local counts ($creg -1); :for x from=0 to=$counts do={:local a [pick begin=3 end=5 [/in wi reg get number=$x uptime]]; :if (a>=30) do={:put "run";} else={:put "No run";}}; delay 5}

Рассмотрим скрипт.

 

Mikrotik Routerboard, Wireless Client Uptime

Рис.1. Mikrotik Routerboard, Wireless Client Uptime.

 

Параметр uptimeслужит  для определения времени подключения беспроводных клиентов к Mikrotik Routerboard. Его мы и будем извлекать.

while (true) – выполняем бесконечный цикл для постоянного переопределения uptime (можно использовать планировщик Mikrotik Routerboard).

do={:local creg [/in wi reg print count-only]; - определяем количество подключенных беспроводных клиентов.

:local counts ($creg -1); - учитывая то, что нумерация списка подключенных начинается с нуля, вычитаем единицу из общего количества подключенных клиентов и определяем конечное значение порядкового номера.

:for x from=0 to=$counts do={:local a [pick begin=3 end=5 [/in wi reg get number=$x uptime]]; - с помощью цикла for перебираем данные о беспроводных клиентах в пределах от нуля до значения указанного в переменной $counts.

/in wi reg get number=$x uptime – извлекаем данные о времени подключения.

pick begin=3 end=5 – из общего значения времени извлекаем только данные о минутах.

:if (a>=30) – выполняем проверку превышения лимита времени.

do={:put "run";} – если текущее значение uptime беспроводного клиента превышает заданное значение, выполняем действия.

else={:put "No run";} – если не превышает, то не выполняем действий.

delay 5 – приостанавливаем скрипт на 5 секунд перед началом следующего цикла.

 

Действия относительно Wi-Fi клиентов Mikrotik Routerboard в зависимости от времени подключения к базовой станции

Рис.2. Mikrotik Routerboard, лимит времени не превышен.

 

На рис.2. мы видно, что время подключения клиентов к базовой станции не превышает 30 минут. Поэтому скрипт не выполняет действия.

 

Действия относительно Wi-Fi клиентов Mikrotik Routerboard в зависимости от времени подключения к базовой станции

Рис.3. Mikrotik Routerboard, лимит времени превышен.

 

На рис.3. показано, что три клиента превысили лимит времени подключения. Скрипт, соответственно, снизил их скорость подключения. Для корректной работы скрипта необходимо обнулять время подключения клиентов к базе.

 

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