Запуск скрипта в MikroTik по будням
-
- Сообщения: 3
- Зарегистрирован: 29 мар 2022, 06:43
- Откуда: Orenburg
Запуск скрипта в MikroTik по будням
Здравствуйте, у кого нибудь был опыт написания скрипта который должен отрабатывать только в будние дни?
нужно чтобы при запуске скрипта проверялся текущий день недели, если это будний день то выполнялась команда включения порта Ether1
нужно чтобы при запуске скрипта проверялся текущий день недели, если это будний день то выполнялась команда включения порта Ether1
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Здравствуйте.
Скрипт должен выполняться в любой момент или по расписанию?
Скрипт должен выполняться в любой момент или по расписанию?
-
- Сообщения: 3
- Зарегистрирован: 29 мар 2022, 06:43
- Откуда: Orenburg
Re: Запуск скрипта в MikroTik по будням
По расписанию будет вызываться выполнение скрипта
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Создаёте скрипт, потом пять записей в Scheduler для пяти будних дней подряд и запуском с интервалом в 7 дней, в поле скрипта указываете имя вашего скрипта.
-
- Сообщения: 3
- Зарегистрирован: 29 мар 2022, 06:43
- Откуда: Orenburg
Re: Запуск скрипта в MikroTik по будням
Как вариант, думаю подойдёт, спасибо за информацию
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: Запуск скрипта в MikroTik по будням
Получаем день недели, ну а потом играем как хотим
Код: Выделить всё
:local date [/system clock get date]
# Math Calculation here
:local result ""
:local months [:toarray "jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec"]
:local monthtbl [:toarray "0,3,3,6,1,4,6,2,5,0,3,5"]
:local daytbl [:toarray "sun,mon,tue,wed,thu,fri,sat"]
:local month [:pick $date 0 3]
:local day [:pick $date 4 6]
:local dayc [:pick $date 5 6]
:local century [:pick $date 7 9]
:local year [:pick $date 9 11]
:local yearc [:pick $date 10 11]
# if the first char is a 0 (zero) only read last char, else script fails
:if ([:pick $date 4 5] = 0) do={ :set day ($dayc)}
:if ([:pick $date 9 10] = 0) do=[:set year ($yearc)]
:local sum 0
:set sum ($sum + (2 * (3 - ($century - (($century / 4) * 4)))))
:set sum ($sum + ($year / 4))
:set sum ($sum + $year + $day)
:for mindex from=0 to=[:len $months] do={
:if ([:pick $months $mindex] = $month) do={:set sum ($sum + [:pick $monthtbl $mindex]) }
}
:set sum ($sum - (($sum / 7) * 7))
:set result [:pick $daytbl $sum]
# END Math Calculation
:put ([:pick $date 0 3] . "/" . [:pick $date 4 6] . "/" . [:pick $date 7 9] . [:pick $date 9 11] . " is on a " . $result)
Последний раз редактировалось Sir_Prikol 18 апр 2022, 19:08, всего редактировалось 1 раз.
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Это та самая тяжёлая артиллерия, которой я всячески старался избежать
-
- Сообщения: 562
- Зарегистрирован: 14 апр 2018, 15:21
- Откуда: СССР
Re: Запуск скрипта в MikroTik по будням
Вот тут я соглашусь Но... Оставим для потомков
Дома: CCR2004 (7-ISP(GPON)белый IP)
-
- Сообщения: 1
- Зарегистрирован: 28 май 2022, 23:19
- Откуда: Санкт-Петербург
Re: Запуск скрипта в MikroTik по будням
Проще всего заранее сгенерировать файл с выходными днями и проверять по нему:
Файл holidays.txt для разных стран можно скачать тут: https://poofeg.ru/2022/05/запуск-скрипт ... обновлени/
Код: Выделить всё
# получаем сегодняшнюю дату
:local date [/system clock get date]
# читаем файл holidays.txt и приводим его к массиву
:local hdays [:toarray [/file get [/file find name=holidays.txt] contents]]
# проверяем, есть ли сегодняшняя дата в массиве
:local isWork ([:typeof [:find $hdays $date -1]] = "nil")
:if ($isWork) do={
# здесь запускаемый код
}
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Интересная идея Но размер файла для России - 4091 байт. Если размер превысит 4096 байт - /file get contents "вдруг" перестанет работать - не нашёл упоминания об этом нигде в статье или на гитхабе...
UPD: А, всё-таки нашёл, он генерирует именно до 4096
UPD: А, всё-таки нашёл, он генерирует именно до 4096
-
- Сообщения: 4
- Зарегистрирован: 23 сен 2024, 11:35
Re: Запуск скрипта в MikroTik по будням
А можно в скрипте по одной известной дате понедельника выяснить: является ли текущая дата буднями путём остатка от вычитания и деления на 7?
день недели = Остаток (('текущая дата'-'известная дата понедельника')/7)
И если он меньше 5, то это рабочая дата и запускаем скрипт.
Я к сожалению не знаю язык микротика.
день недели = Остаток (('текущая дата'-'известная дата понедельника')/7)
И если он меньше 5, то это рабочая дата и запускаем скрипт.
Я к сожалению не знаю язык микротика.
Последний раз редактировалось Cyr 23 сен 2024, 12:18, всего редактировалось 1 раз.
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Типа такого?
0 - четверг (как и 1 января 1970 г.)
1 - пятница
2 - суббота
3 - воскресеньне
4 - понедельник
5 - вторник
6 - среда
Код: Выделить всё
:local daynum ([:tonum [:totime [/system/clock/get date]]] / 24 / 3600);
:put ($daynum - ($daynum / 7) * 7)
1 - пятница
2 - суббота
3 - воскресеньне
4 - понедельник
5 - вторник
6 - среда
-
- Сообщения: 4
- Зарегистрирован: 23 сен 2024, 11:35
Re: Запуск скрипта в MikroTik по будням
Нет, просто вычесть из текущей даты дату '23.09.2024' (ближайший понедельник). Или даты нельзя вычитать? Если нельзя, то привести к тому, чтобы понедельник был 0 (или 1). И запускать скрипт если день недели меньше 5 (или 6).Chupaka писал(а): ↑23 сен 2024, 12:16 Типа такого?
Код: Выделить всё
:local daynum ([:tonum [:totime [/system/clock/get date]]] / 24 / 3600);
И эта строка не срабатывает.
-
- Сообщения: 4
- Зарегистрирован: 23 сен 2024, 11:35
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Я её тестировал на http://demo.mt.lv - официальном демо-роутере %) Проверил вот сейчас на домашнем - показывает. Что именно не срабатывает?
-
- Сообщения: 4
- Зарегистрирован: 23 сен 2024, 11:35
Re: Запуск скрипта в MikroTik по будням
ошибка expected command name (line 1 column 41)Chupaka писал(а): ↑26 сен 2024, 01:24 Я её тестировал на http://demo.mt.lv - официальном демо-роутере %) Проверил вот сейчас на домашнем - показывает. Что именно не срабатывает?
-
- Сообщения: 4088
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Запуск скрипта в MikroTik по будням
Это разделительный слэш в "system/clock". Может, RouterOS шестой версии? Такой формат понимает только седьмая. У меня под рукой шестой нет, чтобы проверить.