Пример создания бота Telegram. Уведомления с сервера в Telegram

Для начала создайте бота в Telegram с помощью @BotFather, от него и буду приходить уведомления с сервера.

С помощью бота @MyTelegramID_bot узнаем свой ID аккаунта.

Заходим на наш сервер и создаем файл .py. Открываем его любым текстовым редактором и вносим туда этот код:

#!/usr/bin/python3
from urllib.parse import urlparse, urlencode
from urllib.request import urlopen
import argparse, sys
token = 'TOKEN_BOT'
id = 'ID_USER'
host = sys.argv[1]
parser = argparse.ArgumentParser()
parser.add_argument('-m', default=host, dest='MESSAGE')
namespace = parser.parse_args()
message = namespace.MESSAGE
turl = 'https://api.telegram.org/bot'
tfull = '{0}{1}/sendMessage'.format(turl, token)
tparams = urlencode({'chat_id': id, 'text': message}).encode('utf-8')
urlopen(tfull, tparams)

Или тоже самое можно написать bash-скриптом:

#!/bin/bash
ID_USER=475831490
TOKEN_BOT=534993854:AAFK4lkRNp5-MyvHH8l-EbpoNKD7_EsDdvI
message=$1
curl -s -X POST "https://api.telegram.org/bot"$TOKEN_BOT"/sendMessage" -F chat_id=$ID_USER -F text="$message" 

Где,
TOKEN_BOT — токен созданного Вами бота.
ID_USER — ID Вашего аккаунта. Он необходим для того, чтобы уведомление бот присылал только Вашему аккаунту. Другие, кто добавит бота, получать уведомление не будут.

Для начала сделайте скрипт исполняемым командой:

chmod +x file_name.py

И проверим, работает ли. Отправим команду, чтобы бот отписал нам простое сообщение «Hello, world!»:

python3 file_name.py -m "Hello, world!" 

Обратите внимание, что обязательно нужно указывать опцию -m, а сообщение должно быть в скобках («»).

Как можно использовать?

Допустим, Вы запустили на сервере команду, которая выполняется достаточно длинное время. Можно использовать скрипт для уведомления о завершении команды. Например:

какая_то_длинная_команда | python3 file_name.py -m "Выполнение завершено" 

Или, чтобы не писать каждый раз полный запуск команды скрипта, создадим алиас с названием send:

alias send='python3 ~/file_name.py'

Где, ~/file_name.py — полный пусть к скрипту.

Теперь уведомление о завершении можно будет прописать так:

какая_то_длинная_команда | send -m "Выполнение завершено" 

Можно так же использовать скрипт для отправки логов. К примеру напишем скрипт для вывода логов авторизации, apache и fail2ban:

#!/bin/bash
logs=$(echo -e "\n Auth" ; tail -n 10 /var/log/auth.log ; echo -e "\n Fail2ban" ; tail -n 10 /var/log/fail2ban.log ; echo -e "\n Apache" ; tail -n 10 /var/log/apache2/error.log)
python3 ~/file_name.py -m "$logs" 

И добавим запись в cron, чтобы скрипт выполнялся (например) каждые 30 минут:

crontab-e
*/30 * * * * /log_sent_telegram.sh

После чего Вам бот будет присылать каждые 30 минут эти логи.

Так же, можно использовать такой же метод для проверки доступности какого-то сайта методом пинг. Скрипт выглядит так:

#!/bin/bash
 IP='lexblog.org'
 ping -c 1 $IP 2>/dev/null 1>/dev/null
 if [ "$?" = 0 ]
 then
 echo "good" 
 else
 python3 ~/tgsend.py -m "example.tdl [not available]" 
 fi

И добавляете в cron с интервалом выполнения 5 минут:

*/5 * * * * ~/ping_check.sh

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