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

13 мыслей о “MikroTik — автоматическое обновление RouterOS

  • 22.02.2022 в 09:44
    Постоянная ссылка

    На седьмой версии он должен работать? У меня не работает(. Ни чего не обновляет.

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

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

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

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

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

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

    Ответ
  • 11.06.2023 в 22:47
    Постоянная ссылка

    Перестал обновлять прошивку Firmware. Как минимум на 7.9.2 точно второй раз не перезагружается.

    Ответ
    • 23.06.2023 в 13:18
      Постоянная ссылка

      Так же. Стояла 7,9,2. Прошивку скрипт скачал но она висит сейчас как Upgrade firmware (не Current). Для полного обновления нужно выполнить /system/routerboard upgrade set yes. Как это можно автоматизировать?

      Ответ
      • 23.06.2023 в 15:00
        Постоянная ссылка

        На всех моих роутерах этой проблемы нет, скрипт не менялся. Что конкретно пишется — что есть обновление прошивки, либо прошивка обновилась и только нужна перезагрузка? Возможно это косяк какой-то промежуточной прошивки, вы можете либо вручную обновиться и перезагрузиться, либо вообще ничего не делать и посмотреть, как скрипт отработает на 7.10->7.11, ведь обновление firmware не обязательно.

        Ответ
  • 02.02.2024 в 12:54
    Постоянная ссылка

    Есть три роутера настроенных в CAPsMAN, точки скрипт прописали, а вот сам роутер выдает ошибку : expected end of command (line 1 column 586), куда копать нужно?!

    Ответ

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

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