Cukup sering ada situasi ketika akses ke server diperlukan di sini dan sekarang. Namun, koneksi SSH tidak selalu merupakan cara yang paling nyaman, karena klien SSH, alamat server, atau tautan pengguna / kata sandi mungkin tidak tersedia. Tentu saja, ada
Webmin , yang menyederhanakan administrasi, tetapi juga tidak memberikan akses instan.
Jadi saya memutuskan untuk mengimplementasikan solusi yang sederhana namun menarik. Yaitu, untuk menulis bot Telegram, yang, dimulai pada server itu sendiri, akan menjalankan perintah yang dikirim kepadanya dan mengembalikan hasilnya. Setelah mempelajari
beberapa artikel tentang topik ini, saya menyadari bahwa belum ada yang menggambarkan implementasi seperti itu.
Saya mengimplementasikan proyek ini di Ubuntu 16.04, tetapi untuk peluncuran tanpa masalah di distribusi lain, saya mencoba melakukan semuanya secara umum.
Pendaftaran Bot
Daftarkan bot baru dengan @BotFather. Kami mengirimnya
/newbot
dan selanjutnya dalam teks. Kami akan memerlukan token bot baru dan id Anda (Anda bisa mendapatkannya, misalnya, dari
@userinfobot ).
Persiapan python
Untuk memulai bot, kita akan menggunakan perpustakaan
telebot
(
pip install pytelegrambotapi
). Menggunakan pustaka
subprocess
, kami akan menjalankan perintah di server.
Peluncuran bot
Di server, buat file bot.py:
nano bot.py
Dan rekatkan kode ke dalamnya:
from subprocess import check_output import telebot import time bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
Kami mengganti token bot di dalamnya dengan yang dikeluarkan oleh @BotFather, dan user_id dengan nilai id dari akun Anda. Memeriksa id pengguna diperlukan agar bot menyediakan akses ke server Anda hanya untuk Anda. Fungsi
check_output()
mengeksekusi perintah yang dikirimkan dan mengembalikan hasilnya.
Tetap hanya meluncurkan bot. Untuk memulai proses di server, saya lebih suka menggunakan
screen
(
sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(di mana "ServerBot" adalah pengidentifikasi proses)
Proses akan secara otomatis dimulai di latar belakang. Mari kita masuk ke dialog dengan bot dan memeriksa apakah semuanya berfungsi sebagaimana mestinya:

Selamat! Bot mengeksekusi perintah yang dikirim kepadanya. Sekarang, untuk mendapatkan akses ke server, Anda hanya perlu membuka dialog dengan bot.
Pengulangan perintah
Seringkali, untuk memantau status server Anda harus menjalankan perintah yang sama. Oleh karena itu, pelaksanaan pengulangan perintah tanpa mengirimnya lagi akan sangat tidak pada tempatnya.
Kami akan menerapkan menggunakan tombol sebaris di bawah pesan:
from subprocess import check_output import telebot from telebot import types
Mulai ulang bot:
killall python3 screen -dmS ServerBot python3 bot.py
Periksa lagi apakah semuanya berfungsi dengan benar:

Dengan menekan tombol di bawah pesan, bot harus mengulangi perintah dari mana pesan dikirim.
Alih-alih sebuah kesimpulan
Tentu saja, metode ini tidak berpura-pura menjadi pengganti metode koneksi klasik, namun, Anda dapat dengan cepat mencari tahu tentang status server dan mengirimkan perintah kepadanya yang tidak memerlukan output yang rumit.