Найти тему
MHelp.pro

MikroTik Скрипты: Проверка обновления RouterOS

MikroTik скрипт запускающий проверку наличия обновления RouterOS. Если обновление системы найдено, отправляет сообщение в Telegram, иначе записывает лог о отсутствии обновлений.

🔔 Для работы скрипта вы должны иметь Токен Телеграм бота и ID чата или персональный ID. Создание Telegram бота и получение необходимых ID не является темой этой статьи.

Сообщение Телеграм содержит:

  1. идентификатор устройства;
  2. сообщение с указанием версии обновления;
  3. ссылку на официальный сайт с описанием изменений;
  4. информацию о текущей версии устройства и ветку релиза.
Пример Телеграм сообщения от WhiteHouseMikroTik
Пример Телеграм сообщения от WhiteHouseMikroTik

Изменить идентификатор устройства

Измените идентификатор устройства, чтобы лучше понимать, какое устройство присылает запрос.

[System] -> [Identity]

или

/system identity set name="WhiteHouseMikroTik"

Создать скрипт проверки обновления RouterOS

Для работы скрипта проверка обновления RouterOS необходимо только одно разрешение — чтение.

[System] -> [Scripts] -> [+] -> [Name: CheckUpdate] -> [Policy: read]

Код скрипта:

# Func: Telegram send message
:local TGSendMessage do={
:local tgUrl "https://api.telegram.org/bot$Token/sendMessage?chat_id=$ChatID&text=$Text&parse_mode=html&disable_web_page_preview=True";
/tool fetch http-method=get url=$tgUrl keep-result=no;
}


# Constants
:local TelegramBotToken "987654321:AAFJIVTAWodBwzGX2CLne6-PK4RFNSy-8OY";
:local TelegramChatID "987654321";
:local DeviceName [/system identity get name];
:local TelegramMessageText "\F0\9F\9F\A2 <b> $DeviceName:</b> ";


# Check Update
:local MyVar [/system package update check-for-updates as-value];
:local Chan ($MyVar -> "channel");
:local InstVer ($MyVar -> "installed-version");
:local LatVer ($MyVar -> "latest-version");

:if ($InstVer = $LatVer) do={
:set TelegramMessageText ($TelegramMessageText . "System is already up to date");
} else={
:set TelegramMessageText "$TelegramMessageText New version $LatVer is available! <a href=\"https://mikrotik.com/download/changelogs\">Changelogs</a>. [Installed version $InstVer, chanell $Chan].";
$TGSendMessage Token=$TelegramBotToken ChatID=$TelegramChatID Text=$TelegramMessageText;
}


:log info $TelegramMessageText;

Запись скрипта
Запись скрипта

Если обновлений не обнаружено, скрипт выводит сообщение в лог. Так можно понять, что срипт работает успешно.

Добавить запуск скрипта в расписание

[System] -> [Schedule] -> [+] -> [Name:CheckUpdate] — > [Start Time: 07:00:00] -> [Interval: 1d 00:00:00] -> [Policy: read, write, policy, test]

Код скрипта:

/system script run CheckUpdate

Добавление запуска скрипта в планировщик заданий
Добавление запуска скрипта в планировщик заданий

Теперь обновление какого-то устройства не будет забытым, каждое устройство MikroTik будет ежедневно проверять и напоминать о необходимости обновления!

Источник и где задать вопрос: https://mhelp.pro/ru/mikrotik-skripty-proverka-obnovleniya-routeros/

-4