- Saved searches
- Use saved searches to filter your results more quickly
- ignatiy/ShellBot
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Telegram bot для Linux сервера: мониторинг, уведомления, управление
- Создание чат-бота в Telegram
- Отправка в чат Telegram уведомлений с сервера
- Управление Linux сервером в чат-боте Telegram
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
телеграмм бот, который управляет linux машиной по ssh
ignatiy/ShellBot
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
для запуска на платформах armhf и amd64 потребуется:
если в системе стоит 2 версии python, а именно 2.7 и 3.5 , то нужды устанавливать 3.6 нет. пропускаем следующие пункты до симлинка.. wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz tar -xpJf Python-3.6.0.tar.xz cd Python-3.6.0 ./configure make sudo make install ln -s /usr/local/bin/python3 /usr/bin/python3 если терминал выплюнул вам что уже есть такой файл но версия python по умолчанию всё равно 2.7 то попробуйте сделать симлинк вот так sudo ln -sf python3 /usr/bin/python. это принудительно поменяет версию на python 3.6 или python 3.5 sudo apt-get install python3-pip $ git clone https://github.com/python-telegram-bot/python-telegram-bot --recursive $ cd python-telegram-bot $ python setup.py install pip install --upgrade pip pip install setuptools pip install telepot pip install --upgrade pip далее идем в папку с ботом и запускаем ./botssh.sh
sudo apt-get install build-essential sudo apt-get install libssl-dev sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libsqlite3-dev если в системе стоит 2 версии python, а именно 2.7 и 3.5 , то нужды устанавливать 3.6 нет. пропускаем следующие пункты до симлинка.. wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz (если 3.6.0 не устанавливается в i386) tar -xpJf Python-3.5.0.tar.xz cd Python-3.5.0 ./configure make sudo make install ln -s /usr/local/bin/python3 /usr/bin/python3 если терминал выплюнул вам что уже есть такой файл но версия python по умолчанию всё равно 2.7 то попробуйте сделать симлинк вот так sudo ln -sf python3 /usr/bin/python. это принудительно поменяет версию на python 3.6 или python 3.5 sudo apt-get install python3-pip $ git clone https://github.com/python-telegram-bot/python-telegram-bot --recursive $ cd python-telegram-bot $ python setup.py install pip install --upgrade pip pip install setuptools pip install telepot pip install --upgrade pip далее идем в папку с ботом и запускаем ./botssh.sh
# пихаем shell-bot.service в /etc/systemd/system/ # задаем права chmod + X /etc/systemd/system/shell-bot.service # запускаем systemctl start shell-bot.service # добавляем в автозагрузку systemctl enable shell-bot.service # проверяем статус приложения systemctl status shell-bot.service
Telegram bot для Linux сервера: мониторинг, уведомления, управление
23.01.2020
VyacheslavK
CentOS, Linux
комментариев 8
В этой статье мы рассмотрим пример использования Telegram бота на сервере с Linux CentOS, покажем, как настроить простые уведомления в чат-бот для мониторинга вашего сервера, а также несколько управляющих команд.
В эпоху мобильных гаджетов, стало актуально использование различных мессенджеров не только для общения с реальными людьми, но и использование различных ботов. Например, в 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:
# 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:
Рассмотрим файл 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:
Но только через настройку данного файла это не сработало. Как я понял, здесь можно выполнить только команду описанную одним словом или символами. Я решил проблему создав файл 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
После чего заходим в файл сервиса:
[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) (любой другой человек, не зная ваших данных, подключиться не сможет).
На момент выпуска статьи, тестовый бот удален.
Предыдущая статья Следующая статья