Меню
Контакты
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

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

 

Mikrotik Routerboard извлекаем текущую дату

Рис.1. Mikrotik Routerboard, извлекаем текущую дату.

 

Получаем текущую дату и заносим в переменную а:

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

 

Запуск скрипта в определенное число месяца

Рис.2. Mikrotik Routerboard, определяем тип переменной а.

 

Так как переменная а - строка, то каждый символ выступает под своим порядковым номером. Это значит, что можно извлекать отдельные символы из строки. Нумерация начинается с нуля.

 

Mikrotik Routerboard функция pick

Рис.3. Mikrotik Routerboard, функция pick.

 

При помощи функции pick извлечем число из переменной a и поместим в переменную b.

:local b [:pick $a begin=4 end=6];

Аргумент begin указывает на начальный символ, который нужно извлечь, а аргумент end - на конечный символ, не включая его в выбор.

 

Mikrotik Routerboard функция pick сокращенный вариант

Рис.4. Mikrotik Routerboard, функция pick, сокращенный вариант.

 

Сокращенный вариант предыдущей команды.

:local b [:pick $a 4 6];

Указываем только порядковые номера, слова begin и end не указываем.

 

Запуск скрипта в определенное число месяца

Рис.5. Mikrotik Routerboard, первое число.

 

Следующим шагом было бы добавление условного оператора if. Но если текущим числом месяца окажется первое число, то в результате извлечения данных мы получим значение 01.

 

Mikrotik Routerboard оператор if

Рис.6. Mikrotik Routerboard, оператор if.

 

Поскольку текущий день месяца получил значение 01, условие $b=1 не сможет выполняться, поэтому работа скрипта будет отличаться от ожидаемой.

 

Запуск скрипта в определенное число месяца

Рис.7.  Mikrotik Routerboard, сложение извлеченных данных.

 

Поступим следующим образом. Число состоит из двух символов, поэтому в переменную b следует занести результат суммы двух извлеченных символов:

([pick $a 4]+[pick $a 5]);

В результате сложения (0+1) получим 1.

 

Запуск скрипта в определенное число месяца

Рис.8. Mikrotik Routerboard, рабочий скрипт.

 

Окончательный вариант скрипта выглядит следующим образом:

:local a [/sys clock get date]; :put $a; :local b ([pick $a 4]+[pick $a 5]); :if ($b=3) do={:put "run";} else={:put "No run";}

 

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