пятница, 9 октября 2015 г.

Таймер в скрипте.

   Таймера  в Микротике пока не придумали, можно воспользоваться шедуллером, и запускать скрипт с интервалом, но иногда нужно что-бы таймер обрабатывался в скрипте. Например, мне нужно было, что бы в скрипте на определенном моменте засекалось 60 минут, и в течении этого времени происходила пинг-проверка работоспособности сети wifi, когда это время истекало, скрипт должен был принудительно подключать роутер к другой wifi сети.
В итоге вышло такое:
:global nameADR23;
:global perviy23;
:do {:global nameADR23 [/ip firewall address-list get value-name=list [find address=12.12.12.12]]} on-error={:if ($perviy23=true) do={set $perviy23 ""; set $nameADR23 ""; log info 146} else={:set nameADR23 ""; /ip firewall address-list add dynamic=yes address=12.12.12.12 list=timer23 timeout=0:01:00; set $perviy23 true}};
Создаются две глобальные переменные. Потом проверяется наличие некого списка адресов в  address-list, если его нет, он создается с нужным вам таймаутом(в примере 1 минута). При следующем запуске скрипта, он проверит наличие этого адрес-листа, если он еще есть(время не прошло), просто запишет в переменную nameADR23 имя адрес-листа(timer23), но если время истечет, адрес-лист удалится, извлечь имя его мы не сможем, и если это будет не первый запуск(который непосредственно создает адрес лист) то мы считаем что 1 минута прошла, и выполняем действие log info 146, и очищаем наши переменные(set $perviy23 ""; set $nameADR23 ""). Вот такой работоспособный скрипт (версия 6.18).

Подписаться на новые статьи.

Комментариев нет:

Отправить комментарий