У цій статті ми розглянемо приклад використання Телеграма бота на сервері з Linux CentOS, покажемо, як налаштувати прості повідомлення в чат-бот для моніторингу вашого сервера, а також кілька керуючих команд.

В епоху мобільних гаджетів, стало актуальне використання різних месенджерів не тільки для спілкування з реальними людьми, а й використання різних спамерських пошукових роботів. Наприклад, в Телеграма існує широкий функціонал для бота, який можна використовувати в різних цілях – видати інформацію про замовлення клієнта, інформація по посилці у поштового оператора і, наприклад, моніторинг власного сервера.

Як створити групу чату бота в Telegram

Як створити групу чату бота в Телеграма використовується бот @BotFather. Щоб створити свого бота, потрібно знайти @BotFather у себе в Telegram і перейти в чат з ним:

BotFather створити нового бота telegram

натисніть СТАРТ. Щоб створити нового бота, виберете в меню / newbot, Введіть ім’я бота в форматі “імя_bot». Після створення бота, ви отримаєте API токен бота, який потрібен буде в подальшій настройці.

отримати API токен бота телеграм Тепер потрібно дізнатися ідентифікатор користувача – це ID години з ботом, в який він буде відправляти повідомлення. Перейдіть в ваш з ним чат і натисніть старт і відправити будь-який символ. Після цього в браузері перейдіть за адресою:

https://api.telegram.org/bot<token>/getUpdates – де це API який видав BotFather.

user_id бота телеграма На скріншоті виділено ваш ID.

Отже, ми створили бота в Telegram і отримали авторизовані дані.

Відправлення в чат Telegram повідомлень з сервера

За допомогою раніше створеного бота і отриманих ID можна відсилати з сервера повідомлення в Telegram чат, і таким чином отримувати якісь цікаві нам дані або Алерт.

Для відправки повідомлення в чат, потрібно використовувати наступний URL:

https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text=<text>
де:
– це API який видав @BotFather
– це ID вашого чату з ботом.

наприклад:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id=336116180 -d text="Доброе утро, страна"

відправка повідомлень в telegram бот через api і url

Для чого можна використовувати такі Telegram повідомлення? Наприклад, при створенні резервної копії ви можете відправляти повідомлення про її створення або ж відправляти посилання на скачування копії в чат з ботом. Ви можете відправляти собі в Telegram повідомлення з інформацією про збої в системі. Можна додати в крон виконання будь-яких перевірок з подальшим відправленням в Telegram.

Ще приклад використання подібних повідомлень:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id=336116180 -d text=" User $(whoami) logged into $(hostname) on $(date) from $(echo $SSH_CLIENT | awk '{ print $1}')" &>/dev/null 2>&1

Додайте цей код в / etc / profile і будете отримувати повідомлення в Телеграма при кожному вході користувачів на сервер:

відправка повідомлень в telegram через post і curl

Хочу нагадати, що у всіх командах, потрібно вказувати саме своєю маркер (API) і Посвідчення особи чату.

Управління Linux сервером в чат-боті Telegram

Є набір скриптів, які дозволяє управляти сервером Linux з Telegram чату, надсилаючи різні команди в чат з ботом. Для цього потрібно встановити Python, ряд інструментів і завантажити на сервер скрипти.

# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
# yum install xz -y
# tar -xpJf Python-3.6.0.tar.xz
# cd Python-3.6.0
# yum groupinstall "Development tools" -y
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./configure
# make
# make install

установка Python 3 в centos 7

Створіть симлінк для Python:

# ln -s /usr/local/bin/python3 /usr/bin/python3

І встановити ПО для самого бота:

# pip3 install python-telegram-bot --upgrade

pip3 встановити python-telegram-bot

Тепер скачайте і розпакуйте до себе на сервер в каталог root / admin три файли з архіву telegram_bot.zip:

Розглянемо файл config.py. У ньому нам потрібно вказати маркер (API) і Посвідчення особи вашого чату з ботом, а також шлях до директорій з резервних копій і директорії, розмір якої ви будете надалі перевіряти:

config.py настройки telegram бота

файл bot.sh не вимагає настройки, в ньому лише вказуємо шлях до bot.py:

bot.sh

І найголовніший файл, який власне і дозволить нам керувати сервером, це bot.py. У ньому описуються додаткові опції, які будуть доступні в чаті з ботом і власне туди, ми можемо додавати свій власний функціонал. Наприклад, в першому блоці описуються доступні команди бота в чаті:

python скрипт для telegram бота

Тут описуються всі функції, які будуть доступні, після введення команди / допомога.

Нижче описується сама функція, наприклад,

#функция команады ifconfig
def ifconfig(bot, update):
reload(config)
user = str(update.message.from_user.id)
if user in config.admin: #если пользовательский id в списке admin то команда выполняется
run_command("ifconfig")
bot.sendMessage(chat_id=update.message.chat_id, text=textoutput)

І цю функцію, потрібно описати як команду:

ifconfig_handler = CommandHandler('ifconfig', ifconfig)
dispatcher.add_handler(ifconfig_handler)

Тобто як бачимо, це виконання стандартної функції перевірки мережевих налаштувань ifconfig.

При знайомстві з ботом я спробував додати власну команду, наприклад для перевірки Apache:

# service httpd status

Але тільки через налагодження даного файлу це не спрацювало. Як я зрозумів, тут можна виконати тільки команду описану одним словом або символами. Я вирішив проблему створивши файл apache_status.sh з вмістом:

#!/bin/bash
service httpd status

І створив на нього симлінк:

# ln -s /root/admin/apache_status.sh /usr/local/sbin/apachestatus

Тепер при виклику команди апахестат, У мене виводить статус веб-сервера апаш:

апахестат

У файлі bot.py я заповнив усі три блоки, відповідно до інших функцій. Щоб bot заробив, потрібно запустити файл bot.sh. Для зручності, створимо окремий сервіс для Telegram бота. Створюємо потрібний файл і виставляємо права:

# touch /etc/systemd/system/telegram-bot.service
# chmod 664 /etc/systemd/system/telegram-bot.service

Після чого заходимо в файл сервісу:

# nano /etc/systemd/system/telegram-bot.service

І додаємо вміст:

[Unit]
Description=Telegram bot
After=network.target
[Service]
ExecStart=/root/admin/bot.sh
[Install]
WantedBy=multi-user.target

Тепер додаємо сервіс в автозавантаження і запускаємо:

# systemctl start telegram-bot.service
# systemctl enable telegram-bot.service
# systemctl status telegram-bot.service

Тепер, якщо в чаті з вашим ботом ввести / допомога, Ви отримаєте список доступних команд.

список доступних команд в telegram боті

Наприклад, в даний момент у мене на сервері зупинений веб-сервер Апачі:

команда стану сервера в telegram боті

Запустимо його на сервері і перевіримо статус через Telegram:

перевірка статусу apache з telegram

Ще кілька прикладів виконання команд:

команди для сервера linux в telegram боті

Таким чином, ви можете виконувати моніторинг свого Linux сервера або навіть часткове адміністрування через Телеграма, Що допоможе сильно скоротити час на виконання типових дій.

Так само хотів би зауважити, що авторизація сервера з ботом відбувається саме по Посвідчення особи і маркер (API) (Будь-який інший чоловік, не знаючи ваших даних, підключитися не зможе).

На момент випуску статті, тестовий бот видалений.

Leave a Reply

Your email address will not be published. Required fields are marked *