Bot Telegram untuk pemantauan, pemberitahuan, manajemen server Linux

Pada artikel ini kita akan melihat contoh penggunaan Telegram bot pada server dengan Linux CentOS, tunjukkan cara mengkonfigurasi pemberitahuan sederhana di bot obrolan untuk memonitor server Anda, serta beberapa perintah kontrol.

Di era gadget mobile, menjadi penting untuk menggunakan berbagai messenger tidak hanya untuk berkomunikasi dengan orang sungguhan, tetapi juga penggunaan berbagai bot. Misalnya, dalam Telegram Ada fungsi yang luas untuk bot, yang dapat digunakan untuk berbagai keperluan - untuk memberikan informasi tentang pesanan kepada klien, informasi tentang paket dari operator surat dan, misalnya, memantau server Anda sendiri.

Konten:

  • Membuat bot obrolan di Telegram
  • Mengirim pemberitahuan ke obrolan Telegram dari server
  • Manajemen server Linux di Telegram chatbot

Membuat bot obrolan di Telegram

Untuk membuat bot obrolan Telegram bot bekas @BotFather. Untuk membuat bot Anda, Anda perlu menemukannya @BotFather di Telegram Anda dan pergi untuk mengobrol dengannya:

Klik MULAI. Untuk membuat bot baru, pilih di menu / newbot, masukkan nama bot dalam format "name_bot". Setelah membuat bot, Anda akan menerima API token bot, yang akan diperlukan dalam konfigurasi lebih lanjut.

Sekarang kamu perlu mencari tahu user_id - Ini adalah ID jam dengan bot di mana ia akan mengirimkan pemberitahuan. Pergi ke obrolan Anda dengannya dan tekan mulai dan kirim karakter apa pun. Setelah itu, di browser, buka:

https://api.telegram.org/bot/getUpdates - dimana itu API yang mengeluarkan BotFather.

ID Anda disorot di tangkapan layar.

Jadi, kami membuat bot di Telegram dan menerima data otorisasi.

Mengirim pemberitahuan ke obrolan Telegram dari server

Menggunakan bot yang dibuat sebelumnya dan ID yang diterima, Anda dapat mengirim pemberitahuan ke obrolan Telegram dari server, dan dengan demikian menerima data atau peringatan apa pun yang menarik bagi kami.

Untuk mengirim pesan ke obrolan, Anda perlu menggunakan URL berikut:

https://api.telegram.org/bot/sendMessage?chat_id=&text=
Dimana:
- ini adalah API yang dikeluarkan @BotFather
- ini adalah ID obrolan Anda dengan bot.

Sebagai contoh:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "Selamat pagi, negara"

Mengapa saya dapat menggunakan notifikasi Telegram seperti itu? Misalnya, saat membuat cadangan, Anda dapat mengirim pemberitahuan tentang pembuatannya atau mengirim tautan untuk mengunduh salinan untuk mengobrol dengan bot. Anda dapat mengirim pemberitahuan kepada diri sendiri dengan informasi tentang crash sistem di Telegram. Dimungkinkan untuk menambahkan cek ke mahkota dan kemudian mengirimkannya ke Telegram.

Contoh lain penggunaan pemberitahuan tersebut:

# curl -s -X POST https://api.telegram.org/bot944496485:AAEtGaGCVrQ7d26Rc3r_cqXPIhrKVokh8e4/sendMessage -d chat_id = 336116180 -d text = "User $ (whoami) login ke $ host (echo $ SSH_CLIENT | awk 'print $ 1') "&> / dev / null 2> & 1

Tambahkan kode ini ke / etc / profile dan akan menerima notifikasi di Telegram setiap kali pengguna memasuki server:

Saya ingin mengingatkan Anda bahwa di semua tim, Anda harus menunjukkan dengan tepat milik Anda token (API) dan ID mengobrol.

Manajemen server Linux di Telegram chatbot

Ada satu set skrip yang memungkinkan Anda untuk mengontrol server Linux dari obrolan Telegram, mengirim berbagai perintah untuk mengobrol dengan bot. Untuk melakukan ini, instal Python, sejumlah alat dan unggah skrip ke 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 "Alat pengembangan" -y
# yum instal zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel -y
# ./configure
# make
# make install

Buat symlink untuk Python:

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

Dan instal perangkat lunak untuk bot itu sendiri:

# pip3 instal python-telegram-bot --upgrade

Sekarang unduh dan unzip ke direktori server Anda root / admin tiga file dari arsip telegram_bot.zip:

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

Pertimbangkan file tersebut config.py. Di dalamnya kita perlu menentukan token (API) dan ID obrolan Anda dengan bot, serta jalur ke direktori dengan cadangan dan direktori, yang ukurannya akan Anda periksa lebih lanjut:

File bot.sh tidak memerlukan konfigurasi, di dalamnya kami hanya menunjukkan path ke bot.py:

Dan file paling dasar yang sebenarnya memungkinkan kita untuk mengelola server adalah bot.py. Ini menggambarkan fungsi yang akan tersedia dalam obrolan dengan bot dan sebenarnya di sana, kita dapat menambahkan fungsionalitas kita sendiri. Misalnya, blok pertama menjelaskan perintah bot yang tersedia di obrolan:

Ini menjelaskan semua fungsi yang akan tersedia setelah memasukkan perintah Saya membantu.

Fungsi itu sendiri dijelaskan di bawah ini, misalnya,

# ifconfig fungsi perintah def ifconfig (bot, update): reload (config) user = str (update.message.from_user.id) jika pengguna di config.admin: # jika id pengguna ada dalam daftar admin, perintahnya adalah run_command ("ifconfig" ) bot.sendMessage (chat_id = update.message.chat_id, text = textoutput)

Dan fungsi ini harus digambarkan sebagai perintah:

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

Artinya, seperti yang kita lihat, ini adalah pelaksanaan fungsi standar untuk memeriksa pengaturan jaringan ifconfig.

Ketika bertemu bot, saya mencoba menambahkan perintah saya sendiri, misalnya, untuk memeriksa Apache:

# status layanan httpd

Tetapi hanya melalui konfigurasi file ini tidak berfungsi. Seperti yang saya pahami, di sini Anda hanya dapat menjalankan perintah yang dijelaskan dalam satu kata atau karakter. Saya memecahkan masalah dengan membuat file apache_status.sh dengan konten:

#! / bin / bash
status layanan httpd

Dan menciptakan symlink di atasnya:

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

Sekarang saat memanggil perintah apachestatus, Saya mendapatkan status server web apache:

Dalam file bot.py Saya mengisi ketiga blok, sesuai dengan fungsi lainnya. Agar bot berfungsi, Anda harus menjalankan file bot.sh. Untuk kenyamanan, kami akan membuat layanan terpisah untuk bot Telegram. Kami membuat file yang diperlukan dan menetapkan hak:

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

Lalu kita pergi ke file layanan:

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

Dan tambahkan isinya:

[Unit] Keterangan = Telegram bot After = network.target [Layanan] ExecStart = / root / admin / bot.sh [Instal] WantedBy = multi-user.target

Sekarang tambahkan layanan ke pengisian otomatis dan jalankan:

# systemctl mulai telegram-bot.service
# systemctl aktifkan telegram-bot.service
# systemctl status telegram-bot.service

Sekarang, jika mengobrol dengan bot Anda, masukkan Saya membantu, Anda akan mendapatkan daftar perintah yang tersedia.

Misalnya, saat ini server web dihentikan di server saya Apache:

Jalankan di server dan periksa status melalui Telegram:

Beberapa contoh eksekusi perintah:

Dengan demikian, Anda dapat memonitor server Linux Anda atau bahkan administrasi parsial melalui Telegram, yang akan sangat membantu mengurangi waktu yang diperlukan untuk melakukan tindakan biasa.

Saya juga ingin mencatat bahwa otorisasi server dengan bot terjadi tepat oleh ID dan token (API) (orang lain, yang tidak mengetahui data Anda, tidak akan dapat terhubung).

Pada saat publikasi, bot pengujian telah dihapus.