Меню
Контакты
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   Сб-вс: выходной
Заказать звонок

Напишем скрипт, выполняющий действия в определенное время суток

 27 Дек 2011    MikroTik, Scripts

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

Допустим, нам нужен скрипт, который должен выполнять определённые действия с 00 до 08 часов.

 

Mikrotik Routerboard, извлекаем данные о времени

Рис.1. Mikrotik Routerboard, извлекаем данные о времени.

 

Извлекаем данные о текущем времени:

:local a [/sys clock get time]; :put $a;

 

Скрипт, выполняющий действия в определенное время суток

Рис.2. Mikrotik Routerboard, извлекаем первый символ из строки.

 

Для того, чтобы скрипт работал, необходимо проверить, попадает ли текущее время в диапазон от 0 до 8. Для этого нужно из всей строки извлечь часы и выполнить проверку.

При этом необходимо помнить об одном нюансе. Если текущее время составляет, к примеру, 11 часов, то проверка будет выполнена (0>=11). Но если текущее время будет 00, то (0>=00) не даст ожидаемого результата. Поэтому:

 

Рис.3. Mikrotik Routerboard, проверка на наличие нуля в начале числа.

 

Чтобы избавится от нуля в начале числа, в переменную b извлекаем первый символ из переменной а. Затем выполняем проверку: равна ли переменная b нулю. Если равна, то в переменную b извлекаем только второй символ из переменной а. Если нет, то извлекаем первый и второй символ.

 

Рис.4.  Mikrotik Routerboard, второй вариант проверки на наличие нуля в начале числа.

 

Скрипт, выполняющий действия в определенное время суток

Рис.5. Mikrotik Routerboard, проверяем работу скрипта.

 

Извлекаем данные о текущем времени в переменную а:

:local a [/sys clock get time];

В переменную b извлекаем первый символ из переменной а:

:local b {[pick $a 0]};

Выполняем проверку: равна переменная b нулю или нет. Если равна, то в переменную b извлекаем второй символ из переменной а. Если не равна, то в переменную b извлекаем первый и второй символ из переменной а:

:if ($b=0) do={:set b [:pick $a 1]} else={:set b [:pick $a 0 2]};

Выполняем вторую проверку - с двойным условием. Если b больше или равна нулю и при этом меньше или равна 8, то выполняем заданные действия. Если условие не выполняется, то, соответственно, и эти действия не выполнять:

:if ($b>=0 and $b<=8) do={:put "run"} else={:put "no run";}

 

Рис.6. Проверяем работу скрипта - условие выполняется.

 

Окончательный вариант скрипта:

:local a [/sys clock get time]; :put $a; :local b {[pick $a 0]}; :if ($b=0) do={:set b [:pick $a 1]} else={:set b [:pick $a 0 2]}; :put $b; :if ($b>=0 and $b<=8) do={:put "run"} else={:put "no run";}

  

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