Для початку створіть бота в 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=4758987390 TOKEN_BOT=534993234:AAFKerfwp5-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