Запуск скрипта в MikroTik по будням
Запуск скрипта в MikroTik по будням
Здравствуйте, у кого нибудь был опыт написания скрипта который должен отрабатывать только в будние дни?
нужно чтобы при запуске скрипта проверялся текущий день недели, если это будний день то выполнялась команда включения порта Ether1
нужно чтобы при запуске скрипта проверялся текущий день недели, если это будний день то выполнялась команда включения порта Ether1
Re: Запуск скрипта в MikroTik по будням
Здравствуйте.
Скрипт должен выполняться в любой момент или по расписанию?
Скрипт должен выполняться в любой момент или по расписанию?
Re: Запуск скрипта в MikroTik по будням
По расписанию будет вызываться выполнение скрипта
Re: Запуск скрипта в MikroTik по будням
Создаёте скрипт, потом пять записей в Scheduler для пяти будних дней подряд и запуском с интервалом в 7 дней, в поле скрипта указываете имя вашего скрипта.
Re: Запуск скрипта в MikroTik по будням
Как вариант, думаю подойдёт, спасибо за информацию
- Sir_Prikol
- Сообщения: 560
- Зарегистрирован: 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)
Re: Запуск скрипта в MikroTik по будням
Это та самая тяжёлая артиллерия, которой я всячески старался избежать
- Sir_Prikol
- Сообщения: 560
- Зарегистрирован: 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={
# здесь запускаемый код
}
Re: Запуск скрипта в MikroTik по будням
Интересная идея Но размер файла для России - 4091 байт. Если размер превысит 4096 байт - /file get contents "вдруг" перестанет работать - не нашёл упоминания об этом нигде в статье или на гитхабе...
UPD: А, всё-таки нашёл, он генерирует именно до 4096
UPD: А, всё-таки нашёл, он генерирует именно до 4096