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.