Автоматизуємо MikroTik RouterOS за допомогою Telegram Bot
Є такий вислів: «Щоб не витирати калюжу, краще полагодити кран». Так і системному адміністратору, щоб не витрачати
Типи автоматизації мережі
Автоматизація мережі, як і багато типів автоматизації, визначається як набір засобів для більш швидкого виконання робочих операцій. Підвищення продуктивності роботи — це чудово, але скорочення часу розгортання та внесення змін до конфігурації далеко не завжди є саме тим завданням, яке необхідно вирішити багатьом ІТ-організаціям.
Типи автоматизації мережі:
- Підготовка та налаштування пристроїв — автоматизації створення файлів конфігурації пристроїв.
- Збір даних.
- Переходи між платформами (мережеве обладнання різних вендорів).
- Управління конфігурацією — розгортання, передача та управління станом конфігурації пристрою. Це стосується не тільки найпростіших операцій, таких як підготовка до роботи віртуальної локальної мережі, але й більш складних багатоетапних робочих процесів конфігурування стійкових (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, або якщо для ПК, то завантажуємо додаток в залежності від операційної системи, що використовуєте (я використовував додаток Telegram for Chrome для однойменного браузеру).
Наступним кроком створюємо акаунт, або використовуємо свій, якщо такий є.
Після того, як аккаунт створено, за допомогою пошуку необхідно знайти контакт @BotFather — це головний бот, за допомогою якого можна створювати нових ботів і управляти вже існуючими.
При бажанні, боту можна буде змінити ім’я, інформацію про нього, а також завантажити для нього аватар. Подальше спілкування з ботом відбуватиметься у вигляді текстових команд. Для створення нового бота, виконайте команду:
/newbot
Після введення і відправки команди, головний бот запросить ім’я, в ньому допускаються пропуски і довільний формат самої назви.
Після того, як вказали ім’я бота, бот запросить бажаний %username%. При виборі %username% обов’язковою умовою є суфікс «bot» в кінці імені, (наприклад MikrotikBot або Mikrotik_bot).

Якщо все пройшло успішно, @BotFather відповість повідомленням, що містить спеціальний token для доступу до API. Сам токен складається з двох частин, розділених двокрапкою, наприклад:
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</code на <code>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. За Вами, як за системним адміністратором, залишається вибір подій на обладнанні, які будуть запускати механізм відправки повідомлень.
Головне — пам’ятайте, що автоматизувати задачу, яку ви виконаєте один раз — нераціонально!
Дякую за увагу. Буду вдячним, якщо поділитеся в коментах своїми думками за темою.
18 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів