Telegram bot pro monitorování serveru Linux, oznámení, správu

V tomto článku se podíváme na příklad použití Telegram bot na serveru s Linux CentOS, ukázat, jak nakonfigurovat jednoduchá oznámení v chatu bot pro sledování vašeho serveru, stejně jako několik řídicích příkazů.

V éře mobilních pomůcek je důležité používat různé posly nejen ke komunikaci se skutečnými lidmi, ale také k používání různých robotů. Například v Telegram Pro robota existuje široká funkčnost, která může být použita pro různé účely - poskytovat informace o objednávce klientovi, informace o zásilce od poštovního operátora a například sledovat váš vlastní server.

Obsah:

  • Vytvoření chatu v Telegramu
  • Odesílání oznámení na Telegram chat ze serveru
  • Správa serveru Linux v chatu Telegram

Vytvoření chatu v Telegramu

Chcete-li vytvořit chatovací bota v Telegram použitý bot @BotFather. Chcete-li vytvořit svůj bot, musíte najít @BotFather ve svém telegramu a jděte si s ním povídat:

Klikněte na START. Chcete-li vytvořit nový robot, vyberte v nabídce / newbot, zadejte název robota ve formátu „name_bot“. Po vytvoření robota obdržíte API bot token, který bude potřebovat v další konfiguraci.

Teď to musíte zjistit user_id - Toto je ID hodiny s robotem, ve kterém bude zasílat oznámení. Jděte do chatu s ním a stiskněte start a odešlete libovolnou postavu. Poté v prohlížeči přejděte na:

https://api.telegram.org/bot/getUpdates - kde to je API který vydal BotFather.

Vaše ID je zvýrazněno na snímku obrazovky.

Takže jsme vytvořili robota v Telegramu a obdrželi autorizační data.

Odesílání oznámení na Telegram chat ze serveru

Pomocí dříve vytvořeného robota a přijatých ID můžete odesílat oznámení do Telegramového chatu ze serveru a přijímat tak všechna data nebo upozornění, která nás zajímají..

Chcete-li odeslat zprávu chatu, musíte použít následující adresu URL:

https://api.telegram.org/bot/sendMessage?chat_id=&text=
Kde:
- Toto je API, které vydal @BotFather
- toto je ID vašeho chatu s robotem.

Například:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "Dobré ráno, země"

Proč mohu používat taková telegramová oznámení? Například při vytváření zálohy můžete odesílat oznámení o jejím vytvoření nebo odeslat odkaz pro stažení kopie pro chatování s robotem. Můžete zasílat oznámení s informacemi o selhání systému v Telegramu. K korunám je možné přidat jakékoli šeky a poté je odeslat do Telegramu.

Další příklad použití takových oznámení:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "Uživatel $ (whoami) přihlášený do $ (hostname) na $ (hostname) na $ (hostname) $ (echo $ SSH_CLIENT | awk 'print $ 1') "&> / dev / null 2> & 1

Přidejte tento kód do / etc / profile a obdrží oznámení v Telegram pokaždé, když uživatelé vstoupí na server:

Chci vám připomenout, že ve všech týmech musíte přesně uvést své token (API) a ID chat.

Správa serveru Linux v chatu Telegram

K dispozici je sada skriptů, která vám umožní ovládat Linux server z Telegram chatu, posílat různé příkazy chatovat s bot. Za tímto účelem nainstalujte Python, řadu nástrojů a nahrajte skripty na server.

# 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 "Vývojové nástroje" -y
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./configure
# make
# make install

Vytvořte symbolický odkaz pro Python:

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

A nainstalujte software pro samotný robot:

# pip3 install python-telegram-bot - upgrade

Nyní si stáhněte a rozbalte adresář na serveru root / admin tři soubory z archivu telegram_bot.zip:

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

Zvažte soubor config.py. V tom musíme specifikovat token (API) a ID váš chat s robotem, stejně jako cesta k adresářům se zálohami a adresáři, jehož velikost dále zkontrolujete:

Soubor bot.sh nevyžaduje konfiguraci, v ní označujeme pouze cestu k bot.py:

A nejzákladnější soubor, který nám ve skutečnosti umožňuje spravovat server, je bot.py. Popisuje funkce, které budou k dispozici v chatu s robotem, a tam vlastně můžeme přidat vlastní funkce. Například první blok popisuje dostupné příkazy bot v chatu:

Popisuje všechny funkce, které budou k dispozici po zadání příkazu / help.

Funkce samotná je popsána níže,

# ifconfig příkazová funkce def ifconfig (bot, update): reload (config) user = str (update.message.from_user.id), pokud je uživatel v config.admin: # pokud je ID uživatele v seznamu admin, příkaz je run_command ("ifconfig" ) bot.sendMessage (chat_id = update.message.chat_id, text = textoutput)

A tato funkce by měla být popsána jako příkaz:

ifconfig_handler = CommandHandler ('ifconfig', ifconfig) dispečer.add_handler (ifconfig_handler)

Jak vidíme, jedná se o provedení standardní funkce kontroly síťových nastavení ifconfig.

Při setkání s robotem jsem se pokusil přidat svůj vlastní příkaz, například pro kontrolu Apache:

# service httpd status

Ale pouze konfigurace tohoto souboru nefungovala. Jak tomu rozumím, zde můžete provádět pouze příkaz popsaný jedním slovem nebo znaky. Problém jsem vyřešil vytvořením souboru apache_status.sh s obsahem:

#! / bin / bash
stav služby httpd

A vytvořil na něm symbolický odkaz:

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

Nyní při volání příkazu apachestatus, Dostávám stav webového serveru apache:

V souboru bot.py Vyplnil jsem všechny tři bloky, podle dalších funkcí. Aby bot fungoval, musíte soubor spustit bot.sh. Pro větší pohodlí vytvoříme pro Telegram bot samostatnou službu. Vytvoříme potřebný soubor a nastavíme práva:

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

Pak jdeme do servisního souboru:

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

A přidejte obsah:

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

Nyní přidejte službu do automatického načtení a spusťte:

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

Nyní, pokud chatujete se svým robotem, zadejte / help, dostanete seznam dostupných příkazů.

Například v tuto chvíli je webový server na mém serveru zastaven Apache:

Spusťte jej na serveru a zkontrolujte stav pomocí Telegramu:

Několik dalších příkladů provedení příkazu:

Můžete tak sledovat svůj Linuxový server nebo dokonce částečnou správu Telegram, což pomůže výrazně zkrátit čas potřebný k provedení typických akcí.

Chtěl bych také poznamenat, že k autorizaci serveru pomocí robota dochází přesně do ID a token (API) (žádná jiná osoba, která nezná vaše data, se nebude moci připojit).

V době zveřejnění byla testovací bota odstraněna.