И так
Поехали по порядку:
1) Регистрация бота телеграмм. Находим отца всех ботов – @BotFather. Пишем ему:
/newbotВ ответ на его сообщение вводим имя вашего нового бота. Оно обязательно должно иметь на конце слово bot.
moi_novii_botЕсли имя не занято и оно введено верно, то вы получите токкен – вам необходимо будет его скопировать в файл config.py скрипта:
token = ' '2) Загружаем скрипт. Это первая тестовая версия скрипта – для того чтобы оценить возможности во-первых самого питона, во-вторых – бота telegram. Приветствуются любые пожелания и предложения – допилю. Можете сами что-то добавить – просьба тоже поделится. Каковы возможности программы (их можно посмотреть набрав в своем боте /help):
- посмотреть сетевые настройки (запускает на сервере команду ifconfig)
- получить информацию о дисковом пространстве (запускает на сервере команду df -h)
- получить информацию о памяти (запускает на сервере команду free -m)
- получить информацию о нагрузке на процессор (запускает на сервере команду mpstat)
- получить информацию о размере папки, заданной в config.py (запускает на сервере команду du -sh имя папки)
- проверяет наличие и размер файла в папке (запускает на сервере команду ls -lh файл). Делаю бэкап базы 1с в монтируемую сетевую папку с именем файла по дате – поэтому возникла такая необходимость.
Что еще планирую реализовать: запуск любого скрипта (возможно без вывода всего выполнения, а только конечного результата), улучшить вывод результата – более удобочитаемого, сбор статистики в базу данных и вывод графиков по нагрузкам и т.п.
Для запуска скрипта необходим python 3 и python-telegram-bot. У меня стоит centOS. Там уже стоит 2 версия питона. Ставим рядом 3 питон и библиотеку для работы бота:
wget http://www.python.org/ftp/python/3.3.2/Python-3.6.0.tar.xz
yum install xz
tar -xpJf Python-3.6.0.tar.xz
cd Python-3.6.0
yum groupinstall "Development tools"
./configure
make
make install
ln -s /usr/local/bin/python3 /usr/bin/python3
pip3 install python-telegram-bot --upgradeСостав скрипта:
bot – файл bash-скрипта запускающего python3 bot.py
bot.py – непосредственно сам скрипт бота. Тем кто знаком с питоном – добро пожаловать внутрь.
config.py – хранит настройки. Туда вписываете токкен, полученный в телеграмме. Затем запускаете скрипт.
В приложение телеграмма вводите:
/idТаким образом вы получаете ваш личный id. Его необходимо ввести в строку (вместо 123456789) admin = [‘123456789’]. Это сделано в целях безопасности, чтобы остальные команды могли вводить только пользователи с определенных аккаунтов телеграмма. Можно через запятую прописать несколько id: admin = [‘123456789’, ‘987654321’].
В строке dir1 прописываем путь к папке объем которого бы мы хотели контролировать (у меня это путь до папки с базами pgsql)
В строке dir_backup – путь к папке где лежит файл, объем (или наличие) которого необходимо контролировать. У меня это файл вида 20170218.tar.gz. По умолчанию именно вариант с названием файла годмесяцдата.tar.gz проверяется. Если вы хотите изменить маску проверяемого файла, то вам необходимо найти и отредактировать в файле bot.py строку
filebackup = config.dir_backup + cur_year + cur_month + cur_day + '.tar.gz' #формируем имя файла для поискаИмейте ввиду, что дальнейшем при исправлении файла config.py вам не нужно будет перезапускать скрипт. Все настройки перечитываются скриптом каждый раз заново.
Неплохо бы добавить этот скрипт в автозагрузку. Для CentOS 7:
touch /etc/systemd/system/telegram-bot.service
chmod 664 /etc/systemd/system/telegram-bot.serviceСодержимое этого файла:
[Unit]
Description=Telegram bot
After=network.target
[Service]
Type=simple
User= от имени кого запускать
ExecStart=путь к файлу bot.sh (в этом файле тогда надо прописать полный путь до bot.py)
[Install]
WantedBy=multi-user.targetСтартуем новый сервис:
systemctl start telegram-bot.serviceДобавляем его в автозагрузку:
systemctl enable telegram-bot.serviceПроверяем статус:
systemctl status telegram-bot.serviceМожем вводить команды. Начинаем с /help.
> Ссылка на архив со скриптом
Спасибо, riot26 за выкладку на githab:
gist.github.com/riot26/bb55e8a19fae0b58d687040c54cbc148
Комментарии (18)
tmnhy
20.02.2017 16:12Спасибо, riot26, посмотрел код.
А почему питон, а не пхп или вообще bash?
il_da_r
20.02.2017 16:45+2Bash для работы с telegram bot? Если реализуете, то вам респект!
Питон потому, что изучаю именно этот язык в данный момент.tmnhy
20.02.2017 16:46А что там сложного?
Вот, например, https://github.com/topkecleon/telegram-bot-bash
il_da_r
20.02.2017 16:53О, здорово! Спасибо! Не знал! Поковыряю.
Изучаю Python просто вот и реализовал. Так сказать практика!
il_da_r
20.02.2017 17:04Кстати этот скрипт кросплатформенный (так в защиту питона). Можно опрашивать и windows машины — только исправить (добавить) команды.

Zeka13
21.02.2017 11:38а Bash не «кросплатформенный»? В Windows 10 же завезли уже. Если уж претендуете на несколько платформ, то это должно из коробки и работать, а не «нужно правда для Windows добавить все проверки с нуля».

il_da_r
21.02.2017 16:24Цель создать универсальное решение есть конечно, но в будущем, по мере освоения питона и ботостроения. Не надо уж слишком серьезно относиться к этому продукту — это пока проба «пера». Мне бы получить отзыв по тому — какой функционал реализовать.
tmnhy
21.02.2017 16:40Мне бы получить отзыв по тому — какой функционал реализовать.
Если в том направлении, что у вас, т.е. мониторинг ресурсов, то дёргать бота командами, чтобы он написал в ответ — так никто не будет делать.
По идее, помимо команд, логикой бота должна быть предусмотрена рассылка алертов. Т.е. на сервере идёт мониторинг и по расписанию скидывается админу необходимая информация, либо алерт, по какому-то правилу, если что-то пошло не так.
Это всё реализуется связкой крон+POST-запрос, без всякого навороченного API и питона.
tmnhy
А репозитория нет? Посмотреть интересно, но не до такой степени, чтобы что-то качать, да ещё и устанавливать.
Не надо так! Есть же вирт. окружение!
riot26
gist
вдруг кто-то захочет посмотреть