Telegram bot отправить сообщение — Системные уведомления в группу Telegram

Сегодня я расскажу, как сделать небольшой комплекс по приему и отправки сообщений от различных сервисов (nagios, zabbix и пр.) в группу Телеграма.

В двух словах. На пограничном сервере живет маленький скрипт — бот телеграмма. Он умеет принимать данные тремя способами

  • либо по почте сообщения (от тех сервисов, что иначе не умеют слать уведомления). Затем выбирая, что необходимо
  • Из параметров командной строки, если его запустили локально
  • По сети, то что пришло откуда-то из вне

Изначально планировалось писать полнофункционального бота, но нам нужен лишь метод SendMessage, поэтому решено было обойтись одной строкой которая делает POST, и шлет наше сообщение в JSON, все согласно API .

Бот добавлен в нашу группу, как администратор. И радует нас своими сообщениями.

Как создать бота, я не буду рассказывать, это я уже говорил пару статей назад. Могу лишь сказать, что сам бот, это в итоге, простейший постинг данных. Где в $token{‘bot’} лежит токен бота, в $groupid — номер группы где бот живет.

Теперь расскажу, о каждом из способом чуть более подробно.

Чтение данных из входящего письма

  • делаем почтовый алиас на скрипт
  • в скрипте читаем stdin
  • берем что надо, отправляем в телеграмм.

&nbsp

Чтение данных из командной строки

Тут можно ничего не писать, читаете @ARGV массив и дальше по накатанной.

Чтение данных из сети

Вот тут, я думал сделать простенький сервер, который будет слушать какойто порт, принимать данные и скармливать скрипту. Но лень не дала это сделать. Отдельный демон, отдельная реализация, опять же автозапуск городить, дружить с systemd/initd. Решил подрядить на это старый, и забытый всеми xinetd.

Ставим

Придумаваем порт и записываем его в /etc/services

Разрешаем этот порт в фаерволе, если он у вас есть.

Пишем модуль для xinetd — /etc/xinetd.d/tlgrmBotSocket

Синтаксис простой, server_args вам даже не надо будет, у меня скрипт по этому аргументу понимает, что дальше идет поток из сети. В самом скрипте бота

вуаля.. теперь с любого удаленного хоста можно подключившись на порт 11234 (обычным телнетом к примеру) отправить сообщение, которое придет в группу телерамма. Конечно, тут можно сделать авторизацию, накрутить. Это уже дело личное и каждый усложняет сам.

Как использовать. К примеру для nagios — уведомления отправляются вот таким образом

В общем, любой stdout поток можно отправить туда. Стыкуется с любыми системами и скриптами.

Из перловых сриптов шлю вот так

Очень просто. Выглядит как-то так

screenshot_2016-09-23-10-59-18
Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.