В связи с тем, что сейчас периодически наблюдается масштабная эксплуатация уязвимости 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

MikroTik — автоматическое обновление RouterOS: 5 комментариев

    • 03.03.2022 в 10:09
      Постоянная ссылка

      На шестой версии точно работает. Сегодня залилось успешно вчерашнее обновление. На седьмой нашёл ошибку), при копировании из скрипта пропал один символ. Скопировал заново. Жду обновления, чтобы проверить работоспособность). Спасибо.

      Ответить
      • 23.03.2022 в 09:08
        Постоянная ссылка

        Все прекрасно работает и на седьмой версии. Вчерашние обновления залились успешно. Спасибо.

        Ответить
  • 25.02.2022 в 02:28
    Постоянная ссылка

    Подскажите, пожалуйста, какой будет код только установки обновления package без обновления firmware?

    Ответить

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

Ваш адрес email не будет опубликован.

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