Цель которую я преследую данной заметкой – это как получить идентификатор созданной группы (из Telegram), в которую после будут включены коллеги по отделу системного администрирования с целью быстрого оповещения в случае срабатывания триггеров вида: Важность: Высокая и Чрезвычайная. Просто как я себе это вижу, для обычных не слишком сильно важных событий достаточно и почты, да и напоминалок, а вот что-то по серьезнее где требуется быстрое принятие ответных мер уже в мессенджер, который есть у любого. А в нашей профессии чтобы на смартфоне не был установлен Telegram клиент это не про нас.

Все дальнейшие действия будут протекать на предшествующих этой заметке заметках.

Шаг №1: На системе Ubuntu 18.04 Server поднята связка 3proxy + Tor:

Шаг №2: Бот у меня зарегистрирован с именем Ekzbot есть его идентификатор и пароль. Процедуру регистрации бота указывать не буду, в интернете все есть.

Шаг №3: Использую скрипт через который своему зарегистрированному боту посылаю сообщения:

ekzorchik@srv-zabbix:~$ sudo nano /usr/lib/zabbix/alertscripts/telegram.sh

TOKEN=415624378:AAG4m_bSgEccPFf4W38-HSvHK_gcKnuzSz8

CHAT_ID="$1"

SUBJ="$2"

MESSAGE="$3"

SOCKSIP=172.33.33.102

SOCKSPORT=50000

URL="https://api.telegram.org/bot$TOKEN/sendMessage"

curl -x socks5://$SOCKSIP:$SOCKSPORT -s --header 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${CHAT_ID}\",\"text\":\"${SUBJ}\n${MESSAGE}\"}" "https://api.telegram.org/bot${TOKEN}/sendMessage"

ekzorchik@srv-zabbix:~$ sudo chmod + /usr/lib/zabbix/alertscripts/telegram.sh

На заметку: Где IP-адрес 172.33.33.102 – это адрес этой системы на которой у меня поднят сервис 3proxy + tor и обозначен порт/50000 для взаимодействия через socks.

Шаг №4: На своем смартфоне я создал группу с именем ekzit и добавил туда хотя бы одного абонента:

Шаг №5: В созданную группу включил своего бота с именем Ekzbot через клиент Telegram со своего смартфона.

Шаг №6: Для формирования вывода с целью получения chat_id понадобиться в систему установить утилиту:

ekzorchik@srv-zabbix:~$ sudo apt-get install -y jq

Шаг №7: Далее запрашиваю у бота информацию в каких группах он состоит:

ekzorchik@srv-zabbix:~$ curl -x socks5://172.33.33.102:50000 -s POST https://api.telegram.org/bot415624378:AAG4m_bSgEccPFf4W38-HSvHK_gcKnuzSz8/getUpdates | jq -r ".result"
      "chat": {
        "id": -484654310,
        "title": "ekzit",
        "type": "group",
        "all_members_are_administrators": true
      },

Вот в выводе есть значение CHAT_ID группы ekzit.

На заметку: Для созданных в Telegram групповых чатах идентификатор CHAT_ID отрицательный, а для личных переписок от положительный и нужно указать именно так.

Шаг №8: Чтобы отправить сообщение группе ekzit теперь строка будет выглядеть следующим образом:

ekzorchik@srv-zabbix:~$ sudo /usr/lib/zabbix/alertscripts/telegram.sh -484654310 "Хост ekzorchik.ru доступен"

{"ok":true,"result":{"message_id":595,"from":{"id":415624378,"is_bot":true,"first_name":"Ekzbot","username":"Ekzorchikbot"},"chat":{"id":-484654310,"title":"ekzit","type":"group","all_members_are_administrators":true},"date":1598942493,"text":"\u0425\u043e\u0441\u0442 ekzorchik.ru \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d","entities":[{"offset":5,"length":12,"type":"url"}]}}

ekzorchik@srv-zabbix:~$

Сообщения от бота Ekzbot в группу ekzit

Шаг №9: Чтобы отправить команду Linux, а ее результат придет в группу:

ekzorchik@srv-zabbix:~$ sudo /usr/lib/zabbix/alertscripts/telegram.sh -484654310 $(whoami)

{"ok":true,"result":{"message_id":603,"from":{"id":415624378,"is_bot":true,"first_name":"Ekzbot","username":"Ekzorchikbot"},"chat":{"id":-484654310,"title":"ekzit","type":"group","all_members_are_administrators":true},"date":1598942766,"text":"ekzorchik"}}

ekzorchik@srv-zabbix:~$

Результат выполнения команды в группу ekzit

Итог, сообщение пришло. Значит смело можно переходить к следующей заметке в которой я задокумментирую, как настраивается связка Zabbix 5 + Telegram с целью уведомления о критичности, что стоит на мониторинге. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.