Телеграм бот за мониторинг на сървър, известия, управление на Linux

В тази статия ще разгледаме пример за употреба. телеграма бот на сървър с Linux CentOS, покажете как да конфигурирате прости известия в чат бота, за да наблюдавате вашия сървър, както и няколко контролни команди.

В ерата на мобилните джаджи стана важно да се използват различни месинджъри не само за комуникация с реални хора, но и за използване на различни ботове. Например в телеграма За бота има широка функционалност, която може да се използва за различни цели - за даване на информация за поръчката на клиента, информация за колета от пощенския оператор и например наблюдение на вашия собствен сървър.

Съдържание:

  • Създаване на чат бот в Telegram
  • Изпращане на известия до чата на Telegram от сървъра
  • Linux управление на сървъри в чат Telegram

Създаване на чат бот в Telegram

За да създадете чат бот в телеграма използван бот @BotFather. За да създадете своя бот, трябва да намерите @BotFather във вашия Telegram и отидете да говорите с него:

преса START. За да създадете нов бот, изберете в менюто / новак, въведете името на бота във формата „name_bot“ .След създаването на бота ще получите API ботон жетон, който ще е необходим при по-нататъшна конфигурация.

Сега трябва да разберете user_id - Това е идентификационният номер на часа с бота, в който той ще изпраща известия. Отидете в чата си с него и натиснете старт и изпратете всеки символ. След това в браузъра отидете на:

https://api.telegram.org/bot/getUpdates - къде е API който издаде BotFather.

Вашият идентификационен номер е подчертан на екрана.

И така, създадохме бот в Telegram и получихме данни за упълномощаване.

Изпращане на известия до чата на Telegram от сървъра

Използвайки предварително създадения бот и получени идентификационни номера, можете да изпращате известия до чата на Telegram от сървъра и по този начин да получавате всякакви данни или сигнали, които са от интерес за нас.

За да изпратите съобщение до чата, трябва да използвате следния URL адрес:

https://api.telegram.org/bot/sendMessage?chat_id=&text=
когато:
- това е API, който @BotFather издаде
- това е идентификационният номер на вашия чат с бота.

Например:

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

Защо мога да използвам такива известия от Telegram? Например, когато създавате резервно копие, можете да изпращате известия за неговото създаване или да изпратите връзка, за да изтеглите копието, за да разговаряте с бота. Можете да си изпращате известия с информация за системни сривове в Telegram. Възможно е да добавите всякакви чекове към короните и след това да ги изпратите до Telegram.

Друг пример за използването на такива известия:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "User $ (whoami) влезе в $ (име на хост) на $ (име на хост) на (ехо $ SSH_CLIENT | awk 'print $ 1') "&> / dev / null 2> & 1

Добавете този код към / и т.н. / профил и ще получавате известия във телеграма всеки път, когато потребителите влизат в сървъра:

Искам да ви напомня, че във всички екипи трябва да посочите точно вашия токен (API) и ID чат.

Linux управление на сървъри в чат Telegram

Има набор от скриптове, който ви позволява да контролирате Linux сървъра от чат на Telegram, като изпращате различни команди за чат с бота. За да направите това, инсталирайте Python, редица инструменти и качете скриптове на сървъра.

# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
# yum инсталирате xz -y
# tar -xpJf Python-3.6.0.tar.xz
# cd Python-3.6.0
# yum groupinstall "Инструменти за развитие" -y
# yum инсталирате zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./конфигурирайте
# направи
# направи инсталиране

Създайте символна връзка за Python:

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

И инсталирайте софтуера за самия бот:

# pip3 инсталирайте python-telegram-bot - надграждане

Сега изтеглете и разархивирайте до вашата сървърна директория root / admin три файла от архива telegram_bot.zip:

  • bot.sh
  • config.py
  • bot.py

Обмислете файла config.py. В него трябва да уточним токен (API) и ID чата ви с бота, както и пътя към директории с архивиране и директорията, чийто размер ще проверите допълнително:

досие bot.sh не изисква конфигурация, в него ние само посочваме пътя към bot.py:

И най-основният файл, който всъщност ни позволява да управляваме сървъра, е bot.py. Той описва функциите, които ще бъдат налични в чата с бота и всъщност там можем да добавим собствена функционалност. Например, първият блок описва наличните команди за бот в чата:

Той описва всички функции, които ще бъдат достъпни след въвеждане на командата / помощ.

Самата функция е описана по-долу, например,

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

И тази функция трябва да се опише като команда:

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

Това е, както виждаме, това е изпълнението на стандартната функция за проверка на мрежовите настройки ifconfig.

Когато се срещах с бота, се опитах да добавя моя собствена команда, например, за да проверя Apache:

# услуга httpd статус

Но само чрез конфигурацията на този файл не се получи. Както го разбирам, тук можете да изпълните само командата, описана с една дума или знаци. Реших проблема, като създадох файл apache_status.sh със съдържание:

#! / bin / bash
статус httpd услуга

И създадох символна връзка върху него:

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

Сега при повикване на командата apachestatus, Получавам статуса на уеб сървъра Apache:

Във файл bot.py Попълних и трите блока, според други функции. За да работи ботът, трябва да стартирате файла 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] Описание = Telegram bot After = network.target [Service] ExecStart = / root / admin / bot.sh [Install] WantedBy = multi-user.target

Сега добавете услугата за автоматично зареждане и стартиране:

# systemctl стартира telegram-bot.service
# systemctl активира telegram-bot.service
# systemctl status telegram-bot.service

Сега, ако разговаряте с вашия бот, въведете / помощ, ще получите списък с налични команди.

Например в момента, в който уеб сървърът е спрян на моя сървър Apache:

Стартирайте го на сървъра и проверете състоянието чрез Telegram:

Още няколко примера за изпълнение на команди:

По този начин можете да наблюдавате вашия Linux сървър или дори частично администриране чрез телеграма, което ще помогне значително да се намали времето, необходимо за извършване на типични действия.

Искам също така да отбележа, че разрешаването на сървър с бот става точно от ID и токен (API) (всеки друг човек, който не знае вашите данни, няма да може да се свърже).

Към момента на публикуването тестовият бот беше премахнат.