Автоматическая проверка обновлений RouterOS, уведомление о новых версиях при помощи PUSH-сообщений Telegram

Ранее мы уже неоднократно говорили о необходимости своевременного обновления программного обеспечения Mikrotik. Иногда в RouterOS встречаются серьёзные ошибки, очень редко даже критические.

Чем чревато несвоевременно обновление RouterOS я уже писал, причем многие владельцы Mikrotik-ов не обновились и по сей день. Со своей стороны команда Mikrotik докладывает всех сил на поиск и устранение ошибок, выпуск новых версий и своевременное уведомление клиентов.

Далеко не каждый администратор устройства Mikrotik заходит регулярно на официальный сайт в поисках обновлений.

Хотите научиться работать с MikroTik? В этом поможет видеокурс "Настройка оборудования MikroTik". Посмотрите 25 уроков из этого курса бесплатно.



Кнопка «Check for Updates» это хорошо, но толковый администратор, управляющий устройством, на которое возложены серьёзные задачи, перед тем как выполнить команду «Download & Install», обязательно посетит соответствующую ветку официального форума «Announcements». В данной ветке можно ознакомиться с особенностями обновления и отзывами тех клиентов, кто уже успели обновиться.

Очень редко, но всё же случаются ситуации, когда обновление содержит изменение некоторых функций, что потенциально может привести к неполной работоспособности некоторых конфигураций при переходе на новую версию. Бывало и такое, что после обновления пользователи не могли получить доступ к устройству или же конфигурация вовсе слетала.

Бывали на моей памяти и такие обновления, перед которыми, из-за кардинальных изменений, в обязательно порядке необходимо было выполнять бэкап. Без бэкапа вы попросту не смогли бы откатить все настройки в случае необходимости downgrade. Да и копию самого бэкапа необходимо хранить на стороннем устройстве, а не в памяти RouterBOARD.

С учетом всего вышеизложенного, вы не сможете полностью положиться на автоматическое обновление. Собственно, функция автоматического обновления в RouterOS имеется еще с версии RouterOS v6.31 (см. документацию).

Реализован механизм при помощи простенького скрипта:
/system package update
check-for-updates once
:delay 1s;
:if ( [get status] = "New version is available") do={ install }

Добавляете скрипт в System – Scripts, после чего настраиваете планировщик (System – Scheduler) на периодический запуск самого скрипта. Система будет обновляться автоматически, как только при проверке определит доступность новой версии.

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

Есть ли другие варианты? Конечно же, есть. Всё зависит только от вас и вашего умения писать скрипты.


Со своей стороны хочу предложить вам весьма интересный вариант реализации уведомлений о выходе новых версий. Я уже писал о реализации PUSH-уведомлений прямо из Mikrotik RouterOS, так почему бы не воспользоваться этим же методом для уведомлений о новых версиях?

Заходим в System – Scripts и добавляем 2 скрипта.

Первый скрипт, «check_updates»:
:log info "Checking new version RouterOS...";
/system package update
check-for-updates once
:delay 5s;
:if ( [get status] = "System is already up to date") do={ 
:log info "Installed last RouterOS version, skip notification";
}
:if ( [get status] = "New version is available") do={ 
:log warning "Attention! New version of RouterOS is available!";
/system script run new_version_notifier
:delay 2s;
:log warning "Admin was notified by PUSH-message";
}


Данный скрипт осуществляет проверку доступности новой версии и, в зависимости от статуса, либо просто пишет запись в лог, либо запускает скрипт с отправкой уведомления. Скрипт проверен и работает на RouterOS 6.42.1 current, для bugfixes-only и Release candidate, возможно, потребуется вносить правки и указывать Channel.

Если у вас большой парк устройств, вероятно, вам будет полезна следующая команда:
/system routerboard get [параметр]

При её помощи вы сможете получить такие данные:
  • board-name – название устройства, например «hEX»;
  • model – модель, например «RouterBOARD 750G r3»;
  • current-firmware – текущая версия RouterBOOT, например «6.42.1»;
  • upgrade-firmware – последняя версия RouterBOOT, например «6.42.1»;
Что это вам даст? Во-первых, модель устройства, что позволит пересмотреть список изменений конкретно для вашей платформы. Во-вторых, вы можете прямо в скрипте выполнить проверку версии RouterBOOT. Обращаю ваше внимание, версия RouterBOOT не обновляется автоматически!

Версия RouterBOOT обновляется нажатием кнопки «Upgrade», или же выполнением команд (требуется перезагрузка):
/system routerboard upgrade 
/system reboot

Если же вас интересует название конкретного устройства, вытянуть его можно при помощи команды:
/system identity get name

Если данный функционал востребован – вам придется дописать его самостоятельно. Мой скрипт реализует только базовое уведомление. Само уведомление выполняется только в том случае, если у вас более старая версия, если же система актуальна – в уведомлениях нет необходимости. В противном случае Mikrotik будет каждый раз слать вам уведомления и вы попросту перестанете обращать на них внимание.

Второй скрипт, «new_version_notifier»:
tool fetch url="https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=<id_чата>&text=New%20version%20RouterOS%20is%20available" dst-path=telegram.txt; 

Данный скрипт реализует исключительно отправку уведомления, для него вам потребуется <ваш_токен> и <id_чата> для Telegram Bot API, более подробно о них рассказано в публикации: «Отправка Push-уведомлений из Mikrotik RouterOS прямо на мобильный при помощи Telegram».

Последний шаг – настройка планировщика. Заходим в System – Scheduler, создаем новую задачу с командой:
/system script run check_updates

В качестве интервала для запуска я использую 1 день, при желании, интервал можно менять, например, установить запуск каждые 12 часов.

И напоследок, если вы хотите использовать форматирование теста, в URL Telegram API следует заменить:
&text=

на:
&parse_mode=html&text=

В итоге у вас получится URL вида:
https://api.telegram.org/bot<ваш_токен> /sendMessage?chat_id=<id_чата &parse_mode=html&text=<сообщение>"

После этого в сообщении можно будет использовать форматирование, например:
<b>жирный</b>
<i>курсив</i>

Выделение жирным шрифтом будет полезно в случаях, когда вы получаете много уведомлений.

Хотите научиться работать с MikroTik? В этом поможет видеокурс "Настройка оборудования MikroTik". Посмотрите 25 уроков из этого курса бесплатно.


Задавайте вопросы

+7 499 653-76-01
ежедневно, c 10:00 до 20:00 по мск

This email address is being protected from spambots. You need JavaScript enabled to view it.

Группа в телеграм

MikroTik / IT-чат