У цій статті ми розглянемо приклад використання Telegram бота на сервері з Linux CentOS, покажемо, як налаштувати прості повідомлення в чат-бот для моніторингу вашого сервера, а також кілька керуючих команд.
В епоху мобільних гаджетів, стало актуальне використання різних месенджерів не тільки для спілкування з реальними людьми, а й використання різних спамерських пошукових роботів. Наприклад, в Telegram існує широкий функціонал для бота, який можна використовувати в різних цілях - видати інформацію про замовлення клієнта, інформація по посилці у поштового оператора і, наприклад, моніторинг власного сервера.
зміст:
- Як створити групу чату бота в Telegram
- Відправлення в чат Telegram повідомлень з сервера
- Управління Linux сервером в чат-боті Telegram
Як створити групу чату бота в Telegram
Як створити групу чату бота в Telegram використовується бот @BotFather. Щоб створити свого бота, потрібно знайти @BotFather у себе в Telegram і перейти в чат з ним:
натисніть START. Щоб створити нового бота, виберете в меню / newbot, введіть ім'я бота в форматі "імя_bot". Після створення бота, ви отримаєте API токен бота, який потрібен буде в подальшій настройці.
Тепер потрібно дізнатися user_id - це ID години з ботом, в який він буде відправляти повідомлення. Перейдіть в ваш з ним чат і натисніть старт і відправити будь-який символ. Після цього в браузері перейдіть за адресою:
https://api.telegram.org/bot/getUpdates
- де це API який видав BotFather.
На скріншоті виділено ваш ID.
Отже, ми створили бота в Telegram і отримали авторизовані дані.
Відправлення в чат Telegram повідомлень з сервера
За допомогою раніше створеного бота і отриманих ID можна відсилати з сервера повідомлення в Telegram чат, і таким чином отримувати якісь цікаві нам дані або АЛЕРТ.
Для відправки повідомлення в чат, потрібно використовувати наступний URL:
https://api.telegram.org/bot/sendMessage?chat_id=&text=
де:
- це API який видав @BotFather
- це ID вашого чату з ботом.
наприклад:
# Curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "Доброго ранку, країна"
Для чого можна використовувати такі 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 при кожному вході користувачів на сервер:
Хочу нагадати, що у всіх командах, потрібно вказувати саме своєю token (API) і ID чату.
Управління 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:
# Ln -s / usr / local / bin / python3 / usr / bin / python3
І встановити ПО для самого бота:
# Pip3 install python-telegram-bot --upgrade
Тепер скачайте і розпакуйте до себе на сервер в каталог root / admin три файли з архіву telegram_bot.zip:
- bot.sh
- config.py
- bot.py
Розглянемо файл config.py. У ньому нам потрібно вказати token (API) і ID вашого чату з ботом, а також шлях до директорій з резервних копій і директорії, розмір якої ви будете надалі перевіряти:
файл bot.sh не вимагає настройки, в ньому лише вказуємо шлях до bot.py:
І найголовніший файл, який власне і дозволить нам керувати сервером, це bot.py. У ньому описуються додаткові опції, які будуть доступні в чаті з ботом і власне туди, ми можемо додавати свій власний функціонал. Наприклад, в першому блоці описуються доступні команди бота в чаті:
Тут описуються всі функції, які будуть доступні, після введення команди / help.
Нижче описується сама функція, наприклад,
# Функція команада 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
Тепер при виклику команди apachestatus, у мене виводить статус веб-сервера apache:
У файлі 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
Тепер, якщо в чаті з вашим ботом ввести / help, ви отримаєте список доступних команд.
Наприклад, в даний момент у мене на сервері зупинений веб-сервер Apache:
Запустимо його на сервері і перевіримо статус через Telegram:
Ще кілька прикладів виконання команд:
Таким чином, ви можете виконувати моніторинг свого Linux сервера або навіть часткове адміністрування через Telegram, що допоможе сильно скоротити час на виконання типових дій.
Так само хотів би зауважити, що авторизація сервера з ботом відбувається саме по ID і token (API) (Будь-який інший чоловік, не знаючи ваших даних, підключитися не зможе).
На момент випуску статті, тестовий бот видалений.