В устройствах MikroTik после обновления версии RouterOS следует обновить прошивку устройства, до актуальной версии. Использование несовпадающей версии RouterOS и Firmware может вызвать разнообразные и неявные проблемы. Для автоматизации обновления используем скрипт помещенный в планировщик задач (Scheduler) MikroTik.
Скрипт проверен на RouterOS версии 7.20.7.
[System]➙[Scheduler]
Создайте новый скрипт:
- Enabled: yes
- Comment: Automatic RouterBOARD firmware verification and update after device startup.
- Name: FirmwareUpdate
- Start Time: startup
- Policy: read, write, reboot.
Код:
/system/routerboard/
:if ( [get current-firmware] != [get upgrade-firmware]) do={upgrade; :system reboot} else={:log info message="Scheduler: The latest firmware version is being used."}

Скрипт будет запускаться при каждом включении устройства. Если версия имеющейся прошивки (firmware) не совпадает с версией обновления, будет скачиваться новая версия и выполняться перезагрузка устройства, иначе будет выводится сообщение о использовании последней версии прошивки.
Так как с течением времени многие из используемых настроек забываются, в выводе скрипта используется слово «Scheduler», чтобы позже было понятно, что выводит такое сообщение в логе.
Если этот скрипт будет использоваться на роутере, где для установки соединения с интернетом может потребоваться дополнительное время, добавьте в скрипт команду задержки (например на 60 секунд), после запуска устройства.
Код:
:delay 60
/system/routerboard/
:if ( [get current-firmware] != [get upgrade-firmware]) do={upgrade; :system reboot} else={:log info message="Scheduler: The latest firmware version is being used."}
Код, для выполнения в терминале или скриптах Ansibe (без задержки в 60 секунд):
/system scheduler
add comment="Automatic RouterBOARD firmware verification and update after device startup." name=FirmwareUpdate on-event=":delay 60\n/system/routerboard/\n:if ( [get current-firmware] != [get upgrade-firmware]) do={upgrade; :system reboot} else={:log info message=\"Don`t need upgrade\"}" policy=reboot,read,write start-time=startup
Статья из блока: