В связи с тем, что сейчас периодически наблюдается масштабная эксплуатация уязвимости CVE-2018-14847 на устройствах MikroTik ботнетом Mēris, публикую свой скрипт автоматического обновления. Установка происходит с официального источника, поэтому выход в интернет для маршрутизатора обязателен.

Важное предупреждение: не раз видел комментарии, когда у людей после обновления железки окирпичивались, поэтому если вы не уверены, что сможете восстановить его работоспособность в случае поломки, не используйте автообновление. У меня же статистика другая — скрипт работает годами на огромном количестве устройств и ничего не ломается. Разумеется, там делаются и резервные копии, но это уже требует отдельной настройки в зависимости от потребностей администраторов.

В двух словах, как работает скрипт. В первую очередь проверяется, существует ли уже задача с именем Update и оттуда берётся время выполнения, затем вместо старой задачи записывается новая. Если задача не существует, время обновления выставляется на 4:00 каждый день, обычно в это время устройство используется меньше всего. Это полезно для обновления самого скрипта, если нужно массово внести правки, а разное время позволяет выполнять обновление устройств внутри локальной сети чуть позже (ставлю 4:30), потому что при перезагрузке основного роутера интернет отсутствует и дочерние устройства не смогут до конца загрузить новые пакеты. Если вы используете устройства гирляндой с питанием по PoE, обязательно убедитесь, что время выставлено везде разное, т. к. перезагрузка роутера временно обесточит то устройство, которое оно питает.

Далее в указанное время происходит проверка новой версии на канале stable — исправьте под свои потребности, но у меня со стабильным каналом тоже никогда проблем не было, а в long term не хватает функций. Если новая версия обнаружена, сразу создаётся задача обновления прошивки Firmware и выполняется обновление операционной системы с перезагрузкой. При следующем старте уже отрабатывает обновление прошивки и снова выполняется обязательная перезагрузка, а задача Firmware удаляется. В итоге всего происходит две перезагрузки, чтобы обеспечить установку последней версии как операционной системы RouterOS, так и прошивки Firmware.

Применение крайне простое: скопировать текст из блока ниже и вставить его через WinBox в терминал, Enter, готово.

/system scheduler; :local time "04:00:00"; :do {:set time [get [find name=Update] start-time]} on-error={}; :do {remove Update} on-error={}; add interval=1d name=Update on-event="/system package update; set channel=stable; check-for-updates once; :delay 5; :if ([get installed-version] != [get latest-version]) do={/system scheduler add name=Firmware on-event=\"/system scheduler remove Firmware; /system routerboard; :if ([get current-firmware] != [get upgrade-firmware]) do={upgrade; :delay 1; /system reboot}\" start-time=startup; /system package update install}" start-time=$time
MikroTik — автоматическое обновление RouterOS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.