Автоматизация MikroTik RouterOS + Telegram Bot
Содержание
В этой статье рассмотрены возможности автоматизации корпоративной сети с помощью Telegram-бота.
Типы автоматизации сети
Автоматизация сети, как и многие типы автоматизации, определяется как набор средств для более быстрого выполнения рабочих операций. Повышение производительности работы — это прекрасно, но сокращение времени развертывания и внесения изменений в конфигурацию далеко не всегда является именно той задачей, которую необходимо решить многим ИТ-организациям.
Типы автоматизации сети:
- Подготовка и настройка устройств — автоматизация создания файлов конфигурации устройств.
- Сбор данных.
- Переходы между платформами (сетевое оборудование разных вендоров).
- Управление конфигурацией – развертывание, передача и управление состоянием конфигурации устройства. Это касается не только простейших операций, таких как подготовка к работе виртуальной локальной сети, но и более сложных многоэтапных рабочих процессов конфигурирования top-of-rack коммутаторов, сетевых экранов (firewalls) , балансировки нагрузки и развитой инфраструктуры защиты.
- Совместимость – проверка совместимости конфигураций и валидация конфигурации.
- Составление отчетов.
- Устранение проблем — разработка процесса и методики устранения проблем и неисправностей (например, сначала выполняется проверка уровня 2 модели OSI до начала процесса устранения неисправностей на уровне 3) .
Для автоматизации сети системные администраторы используют разные инструменты, протоколы и интерфейсы. В сетевом оборудовании MikroTik под управлением RouterOS можно отправлять сообщения по e-mail и SMS (если в устройстве присутствует и настроен модуль LTE) .
На сегодняшний день альтернативой классическим сообщениям является использование различных ботов в мессенджерах (Whatsapp, Viber и Telegram). Вариант с отправкой Push-сообщений прямо на смартфон, планшет или даже ПК (Windows, Debian, CentOS, MacOS, Linux и т. д.). Все это бесплатно, без использования платных сервисов-посредников и минимальных затрат времени.
Именно мессенджер Telegram лучше всего использовать для автоматизации, поскольку много информации есть на официальной странице относительно написания ботов, их конфигурации и функционала.
Итак, отправку Push-сообщений реализуем с помощью сервиса Telegram, у которого есть удобный API для управления ботами.
Начинаем работу с Telegram
Прежде всего, загружаем официальное мобильное приложение Telegram, или если для ПК, то загружаем приложение в зависимости от используемой операционной системы.
С помощью поиска необходимо найти контакт @BotFather – это главный бот, с помощью которого можно создавать новые боты и управлять уже существующими.
При желании, боту можно будет сменить имя, информацию о нем, а также скачать для него аватар. Дальнейшее общение с ботом будет проходить в виде текстовых команд. Для создания нового бота, выполните команду:
/newbot
После ввода и отправки команды, главный бот запросит имя, в нем допускаются пробелы и произвольный формат самого названия.
После того, как указали имя бота, бот запросит желаемый %username% . При выборе %username% обязательным условием является суффикс «bot» в конце имени (например, MikrotikBot или Mikrotik_bot) .
Если все прошло успешно, @BotFather ответит сообщением, содержащим специальный token для доступа к API. Сам токен состоит из 2 частей, разделенных двоеточием, например:
12558568:Hgsgf74tv7efcdfvhdvhfvcbn65imghmj
Следующим шагом рекомендуется проверить доступность API для вашего бота, делается это в браузере путем открытия специального URL:
https://api.telegram.org/bot<ваш_токен>/getMe
Система возвращает ответы в формате JSON, в коде ответа должен находиться параметр «ok: true», если он есть — API доступен.
Итак, бот почти готов, осталось только научить Mikrotik отправлять сообщения, используя API Telegram. Перед тем, как приступить к настройке RouterOS, необходимо узнать ID чата.
В приложении Telegram, с помощью поиска необходимо найти контакт нашего бота @MikrootBor – это созданный нами бот.
Отправляем нашу боту команду:
/start
После чего в браузере открываем специальный URL:
https://api.telegram.org/bot<ваш_токен>/getUpdates
В ответе нас интересует параметр message=>chat=>id , в нем хранится уникальный идентификатор чата между вами и созданным ботом. По сути это ваш идентификатор как пользователя, он будет идентичен для всех ботов в рамках одного аккаунта.
Отправка тестового Telegram-сообщения
Теперь у нас есть все необходимое, чтобы отправлять сообщения с помощью API. Отправка сообщений осуществляется с помощью браузера, по специально сформированной ссылке, которая имеет следующий вид:
https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=<id_чату>&text=<сообщение>
Параметры:
- ваш_токен – ваш уникальный токен для доступа к API, полученный ранее;
- id_чата – уникальный идентификатор чата, в который нужно отправить сообщение;
- сообщение — текст сообщения.
Текст сообщения может быть на любом языке. Для сообщения на латинице, отступы следует заменять на «%20», точно так же, как это делается в обычных URL. Чтобы отправить сообщение кириллицей, предварительно текст необходимо конвертировать с помощью urlencode, это встроенная функция PHP. Наиболее простой вариант – воспользоваться любым онлайн сервисом, конвертацию выполняем в кодировку UTF-8 .
Отправляем сообщения из Mikrotik RouterOS
Отправить сообщение с RouterOS не составляет особого труда. Для этого можно воспользоваться следующим кодом:
https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=<id_чату>&text=<сообщение>
В консоли RouterOS символ ? используется для вывода справки меню в консоли. Следующие последовательности могут быть использованы для добавления спецсимволов в строки:
- — двойные кавычки
- \ — обратный слэш
- \N — символ конца строки
- \R — return
- \T — горизонтальная табуляция
- $ — знак доллара
- ? — вопросительный знак. спецназначение этого символа – выводить справку меню
- \A — звуковой сигнал терминала BEL (0×07)
- \B — бэкспейс
- \F — form feed (0xFF)
- \V — вертикальная табуляция
- \Xx — шестнадцатеричный код символа
Для того чтобы отправить тестовое сообщение из консоли, используем sendMessage?chat_id
:
/tool fetch url="https://api.telegram.org/bot<ваш_токен>/sendMessage?chat_id=<id_чата>&text=<сообщение>" keep-result=no
Для настройки вы можете воспользоваться стандартными возможностями System — Scripts . Вот собственно и все, остальное за вами.
Как вариант эту систему сообщений можно использовать при отключении основного интернет-канала, Mikrotik может отправить сообщение, используя резервный канал. При этом этот метод абсолютно бесплатен, в отличие от обычных SMS, за которые оператор взимает плату. Единственное ограничение – доступ к Интернет на самом Mikrotik и конечном устройстве с приложением Telegram (отправка и получение).
Пример использования Push-сообщений на Telegram-бота при пропадании связи с сервером
Лично я использую Push-сообщение от Telegram Bot при обнаружении критических ошибок в файле логирования и авторизации на сетевом оборудовании. В качестве простого примера можно использовать Telegram API в связке со встроенным инструментом Netwatch, он предельно прост в использовании и настройке.
Параметры Netwatch :
- Host — пингируемый узел.
- Interval – интервал в секундах между попытками проверки, по умолчанию 1 минута.
- Timeout – задержка чтения, по умолчанию 1000 мс.
- Во вкладках UP и DOWN пишется код, который нужно выполнить, когда хост доступен либо недоступен. Команды (скрипт) выполняются только при изменении статуса с up на down или наоборот.
Пример отправленных Push-сообщений на Telegram-бота при пропадании и восстановлении связи с сервером:
Теперь вы знаете, как реализовать отправку Push-сообщений с сетевого оборудования MikroTik RouterOS на собственноручно созданный Telegram Bot. За Вами как за системным администратором остается выбор событий на оборудовании, которые будут запускать механизм отправки сообщений.