From 8475ba878e6366f99db5a6214080d11b9155f635 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 12 Jun 2026 13:10:41 +0000 Subject: [PATCH 1/2] Improve routerboard_fwupgrade: logging, comment, up-to-date branch --- routeros/routerboard_fwupgrade | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/routeros/routerboard_fwupgrade b/routeros/routerboard_fwupgrade index 4b955fd..4f2095c 100644 --- a/routeros/routerboard_fwupgrade +++ b/routeros/routerboard_fwupgrade @@ -1,6 +1,21 @@ +# RouterBOARD firmware auto-upgrade (RouterOS 6.x / 7.x) +# Создаёт scheduler, который при каждой загрузке сверяет текущую прошивку +# RouterBOARD с доступной (идёт в комплекте с установленным RouterOS) и, +# если появилась новее, обновляет её и перезагружает роутер. +# +# Прошивка RouterBOARD обновляется отдельно от пакетов RouterOS, поэтому +# проверка на старте — после планового апгрейда RouterOS — оптимальна: +# зацикливания нет, т.к. после применения current-firmware == upgrade-firmware. + /system scheduler -add name=routerboard_fwupgrade on-event="if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={\r\ - \n/system routerboard upgrade\r\ - \n:delay 15s\r\ - \n/system reboot\r\ - \n}" policy=reboot,read,write,sensitive start-time=startup +add name=routerboard_fwupgrade comment="Auto-upgrade RouterBOARD firmware at startup" \ + policy=reboot,read,write,sensitive start-time=startup \ + on-event="if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={\r\ + \n:log warning \"routerboard_fwupgrade: new firmware available, upgrading...\";\r\ + \n/system routerboard upgrade;\r\ + \n:delay 15s;\r\ + \n:log warning \"routerboard_fwupgrade: firmware applied, rebooting now\";\r\ + \n/system reboot;\r\ + \n} else={\r\ + \n:log info \"routerboard_fwupgrade: firmware is up to date\";\r\ + \n}" From 98460e6cf4a9eebc7f22b0ffec205f0e1f8b32d5 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 12 Jun 2026 13:17:33 +0000 Subject: [PATCH 2/2] Add Obsidian install guide for routerboard_fwupgrade --- .../docs/routerboard-fwupgrade-obsidian.md | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 routeros/docs/routerboard-fwupgrade-obsidian.md diff --git a/routeros/docs/routerboard-fwupgrade-obsidian.md b/routeros/docs/routerboard-fwupgrade-obsidian.md new file mode 100644 index 0000000..a0b5224 --- /dev/null +++ b/routeros/docs/routerboard-fwupgrade-obsidian.md @@ -0,0 +1,101 @@ +--- +title: RouterBOARD Firmware Auto-Upgrade — установка на MikroTik +tags: + - mikrotik + - routeros + - firmware + - scheduler + - script +created: 2026-06-12 +aliases: + - routerboard_fwupgrade + - RouterBOARD firmware upgrade +--- + +# RouterBOARD Firmware Auto-Upgrade — установка на MikroTik + +Скрипт [[routerboard_fwupgrade]] (`routeros/routerboard_fwupgrade`) создаёт **scheduler**, который при каждой загрузке сверяет текущую прошивку RouterBOARD с доступной и, если появилась новее, обновляет её и перезагружает роутер. + +> [!info] Зачем +> Прошивка RouterBOARD обновляется **отдельно** от пакетов RouterOS. После планового апгрейда RouterOS прошивка остаётся старой, пока её не применишь вручную. Этот scheduler делает это автоматически на старте. + +> [!warning] Требования +> - RouterOS 6.x / 7.x на устройстве RouterBOARD. +> - Права scheduler: `reboot,read,write,sensitive`. +> - Учитывай, что обновление прошивки **перезагружает роутер**. + +--- + +## Установка + +> [!tip] Способ 1 — импорт файла +> 1. Залить файл `routerboard_fwupgrade` в **Files** (Winbox/WebFig перетаскиванием) или скачать на роутер: +> ```routeros +> /tool fetch url="https://raw.githubusercontent.com/gpas45/scripts/main/routeros/routerboard_fwupgrade" +> ``` +> 2. Импортировать (создаст scheduler): +> ```routeros +> /import file-name=routerboard_fwupgrade +> ``` + +> [!tip] Способ 2 — вручную +> Скопировать содержимое файла и вставить в терминал RouterOS целиком. + +--- + +## Проверка установки + +```routeros +/system scheduler print where name=routerboard_fwupgrade +/system routerboard print +``` + +В выводе `/system routerboard print` сравни **`current-firmware`** и **`upgrade-firmware`**: если различаются — есть что обновлять. + +--- + +## Ручной запуск / тест + +> [!danger] У scheduler нет команды `run` +> `/system scheduler run ...` выдаёт `bad command name run` — это нормально, такой команды не существует. Логику запускают иначе. + +Проверить и при необходимости обновиться прямо сейчас (с авто-ребутом): + +```routeros +:if ([/system routerboard get current-firmware] != [/system routerboard get upgrade-firmware]) do={ :put "upgrade needed"; /system routerboard upgrade; :delay 15s; /system reboot } else={ :put "firmware is up to date" } +``` + +Или по шагам, без немедленной перезагрузки: + +```routeros +/system routerboard upgrade ;# применится при следующей перезагрузке +/system reboot ;# когда можно перезагрузить +``` + +--- + +## Логи + +```routeros +/log print where message~"routerboard_fwupgrade" +``` + +> [!success] Что увидишь +> - `new firmware available, upgrading...` → `firmware applied, rebooting now`, либо +> - `firmware is up to date`. + +--- + +## Как это работает + +> [!note] Когда срабатывает +> Scheduler стоит на `start-time=startup` — отрабатывает при каждой загрузке. Зацикливания нет: после применения прошивки `current-firmware == upgrade-firmware`, и условие больше не выполняется. + +Типичный сценарий: обновил RouterOS → роутер перезагрузился → на старте scheduler подтянул и прошивку RouterBOARD. + +--- + +## Связанные заметки + +- [[cloudflare-ip-updater-obsidian|CloudFlare IP Updater]] +- [[initial-setup]] — базовая настройка RouterOS