Bot telegramowy do monitorowania serwera Linux, powiadomień, zarządzania

W tym artykule przyjrzymy się przykładowi użycia. Telegram bot na serwerze z systemem Linux CentOS, pokaż, jak skonfigurować proste powiadomienia w bocie czatu, aby monitorować serwer, a także kilka poleceń sterujących.

W erze gadżetów mobilnych ważne stało się używanie różnych komunikatorów nie tylko do komunikowania się z prawdziwymi ludźmi, ale także za pomocą różnych botów. Na przykład w Telegram Bot ma szeroką funkcjonalność, której można używać do różnych celów - do dostarczania klientowi informacji o zamówieniu, informacji o paczce od operatora poczty i, na przykład, monitorowania własnego serwera.

Treść

  • Tworzenie bota czatu w Telegramie
  • Wysyłanie powiadomień do czatu Telegram z serwera
  • Zarządzanie serwerem Linux w Telegram chatbot

Tworzenie bota czatu w Telegramie

Aby utworzyć bota czatu w Telegram używany bot @BotFather. Aby stworzyć bota, musisz go znaleźć @BotFather w swoim telegramie i idź z nim porozmawiać:

Kliknij START. Aby utworzyć nowego bota, wybierz z menu / newbot, wpisz nazwę bota w formacie „nazwa_bota”. Po utworzeniu bota otrzymasz API token bot, który będzie potrzebny w dalszej konfiguracji.

Teraz musisz się dowiedzieć identyfikator_użytkownika - Jest to identyfikator godziny z botem, w którym będzie wysyłał powiadomienia. Idź z nim na czat i naciśnij start i wyślij dowolną postać. Następnie w przeglądarce przejdź do:

https://api.telegram.org/bot/getUpdates - gdzie to jest API który wydał BotFather.

Twój identyfikator jest podświetlony na zrzucie ekranu.

Więc stworzyliśmy bota w Telegramie i otrzymaliśmy dane autoryzacyjne.

Wysyłanie powiadomień do czatu Telegram z serwera

Za pomocą wcześniej utworzonego bota i otrzymanych identyfikatorów możesz wysyłać powiadomienia do czatu Telegram z serwera, a tym samym odbierać dane lub alerty, które nas interesują.

Aby wysłać wiadomość do czatu, musisz użyć następującego adresu URL:

https://api.telegram.org/bot/sendMessage?chat_id=&text=
Gdzie:
- jest to interfejs API wydany przez @BotFather
- to jest identyfikator twojego czatu z botem.

Na przykład:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "Dzień dobry, kraju"

Dlaczego mogę korzystać z takich powiadomień telegramowych? Na przykład podczas tworzenia kopii zapasowej możesz wysyłać powiadomienia o jej utworzeniu lub link do pobrania kopii, aby porozmawiać z botem. Możesz wysyłać sobie powiadomienia z informacjami o awariach systemu w Telegramie. Można dodać dowolne czeki do koron, a następnie wysłać je do Telegramu.

Kolejny przykład zastosowania takich powiadomień:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "Użytkownik $ (whoami) zalogował się na $ (nazwa hosta) (echo $ SSH_CLIENT | awk 'print $ 1') "&> / dev / null 2> & 1

Dodaj ten kod do / etc / profile i będzie otrzymywać powiadomienia w Telegram za każdym razem, gdy użytkownicy wchodzą na serwer:

Chcę przypomnieć, że we wszystkich zespołach musisz dokładnie wskazać swoje token (API) i ID czat.

Zarządzanie serwerem Linux w Telegram chatbot

Istnieje zestaw skryptów, które pozwalają kontrolować serwer Linux z czatu Telegram, wysyłając różne polecenia do czatu z botem. Aby to zrobić, zainstaluj Python, szereg narzędzi i prześlij skrypty na serwer.

# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
# yum zainstaluj xz -y
# tar -xpJf Python-3.6.0.tar.xz
# cd Python-3.6.0
# yum groupinstall „Narzędzia programistyczne” -y
# yum zainstaluj zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./configure
# make
# make install

Utwórz dowiązanie symboliczne dla Pythona:

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

I zainstaluj oprogramowanie dla samego bota:

# pip3 zainstaluj python-telegram-bot --upgrade

Teraz pobierz i rozpakuj do katalogu serwera root / admin trzy pliki z archiwum telegram_bot.zip:

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

Rozważ plik config.py. W nim musimy sprecyzować token (API) i ID czat z botem, a także ścieżka do katalogów z kopiami zapasowymi i katalogiem, którego rozmiar będzie dalej sprawdzać:

Plik bot.sh nie wymaga konfiguracji, w niej wskazujemy tylko ścieżkę do bot.py:

Najbardziej podstawowym plikiem, który pozwala nam zarządzać serwerem, jest bot.py. Opisuje funkcje, które będą dostępne na czacie z botem i faktycznie tam możemy dodać własną funkcjonalność. Na przykład pierwszy blok opisuje dostępne polecenia bota na czacie:

Opisuje wszystkie funkcje, które będą dostępne po wprowadzeniu polecenia / help.

Sama funkcja jest na przykład opisana poniżej,

# ifconfig polecenie funkcja def ) bot.sendMessage (chat_id = update.message.chat_id, text = textoutput)

I tę funkcję należy opisać jako polecenie:

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

Oznacza to, jak widzimy, wykonanie standardowej funkcji sprawdzania ustawień sieciowych ifconfig.

Podczas spotkania z botem próbowałem dodać własne polecenie, na przykład, aby sprawdzić Apache:

# status httpd usługi

Ale tylko przez konfigurację tego pliku nie działało. Jak rozumiem, tutaj możesz wykonać tylko polecenie opisane jednym słowem lub znakami. Rozwiązałem problem, tworząc plik apache_status.sh z treścią:

#! / bin / bash
status usługi httpd

I utworzył na nim dowiązanie symboliczne:

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

Teraz podczas wywoływania polecenia apachestatus, Otrzymuję status serwera WWW apacz:

W pliku bot.py Wypełniłem wszystkie trzy bloki, zgodnie z innymi funkcjami. Aby bot działał, musisz uruchomić plik bot.sh. Dla wygody stworzymy oddzielną usługę dla bota Telegram. Tworzymy niezbędny plik i ustawiamy prawa:

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

Następnie przechodzimy do pliku usługi:

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

I dodaj zawartość:

[Jednostka] Opis = Telegram bot After = network.target [Usługa] ExecStart = / root / admin / bot.sh [Zainstaluj] WantedBy = multi-user.target

Teraz dodaj usługę do automatycznego ładowania i uruchom:

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

Teraz, jeśli rozmawiasz ze swoim botem, wejdź / help, dostaniesz listę dostępnych poleceń.

Na przykład w tej chwili serwer WWW jest zatrzymany na moim serwerze Apacz:

Uruchom go na serwerze i sprawdź status za pomocą Telegramu:

Kilka innych przykładów wykonania poleceń:

W ten sposób możesz monitorować swój serwer Linux, a nawet częściowo administrować Telegram, co pomoże znacznie skrócić czas wykonywania typowych czynności.

Chciałbym również zauważyć, że autoryzacja serwera za pomocą bota odbywa się właśnie przez ID i token (API) (żadna inna osoba, nie znająca Twoich danych, nie będzie mogła się połączyć).

W momencie publikacji bot testowy został usunięty.