Très souvent, il y a des situations où l'accès au serveur est nécessaire ici et maintenant. Cependant, la connexion SSH n'est pas toujours le moyen le plus pratique, car le client SSH, l'adresse du serveur ou le lien utilisateur / mot de passe peuvent ne pas être à portée de main. Bien sûr, il y a
Webmin , qui simplifie l'administration, mais il ne donne pas non plus d'accès instantané.
J'ai donc décidé de mettre en œuvre une solution simple mais intéressante. À savoir, pour écrire un bot Telegram, qui, à partir du serveur lui-même, exécutera les commandes qui lui seront envoyées et retournera le résultat. Après avoir étudié
plusieurs articles sur ce sujet, j'ai réalisé que personne n'avait encore décrit de telles implémentations.
J'ai implémenté ce projet sur Ubuntu 16.04, mais pour un lancement sans problème sur d'autres distributions, j'ai essayé de tout faire de manière générale.
Enregistrement du bot
Enregistrez un nouveau bot avec @BotFather. Nous lui envoyons
/newbot
et plus loin dans le texte. Nous aurons besoin du jeton du nouveau bot et de votre identifiant (vous pouvez l'obtenir, par exemple, auprès de
@userinfobot ).
Préparation Python
Pour démarrer le bot, nous utiliserons la bibliothèque
telebot
(
pip install pytelegrambotapi
). En utilisant la bibliothèque de
subprocess
-
subprocess
, nous exécuterons des commandes sur le serveur.
Lancement du bot
Sur le serveur, créez le fichier bot.py:
nano bot.py
Et collez-y le code:
from subprocess import check_output import telebot import time bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
Nous remplaçons le jeton de bot qu'il contient par celui émis par @BotFather et user_id par la valeur d'ID de votre compte. La vérification de l'ID utilisateur est nécessaire pour que le bot ne vous donne accès à votre serveur. La fonction
check_output()
exécute la commande passée et renvoie le résultat.
Il ne reste plus qu'à lancer le bot. Pour démarrer les processus sur le serveur, je préfère utiliser
screen
(
sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(où "ServerBot" est l'identifiant du processus)
Le processus démarre automatiquement en arrière-plan. Entrons dans le dialogue avec le bot et vérifions que tout fonctionne comme il se doit:

Félicitations! Le bot exécute les commandes qui lui sont envoyées. Maintenant, pour accéder au serveur, il vous suffit d'ouvrir une boîte de dialogue avec le bot.
Répétition des commandes
Souvent, pour surveiller l'état du serveur, vous devez exécuter les mêmes commandes. Par conséquent, la mise en œuvre de la répétition de commandes sans les renvoyer sera très hors de propos.
Nous allons implémenter en utilisant les boutons en ligne sous les messages:
from subprocess import check_output import telebot from telebot import types
Redémarrez le bot:
killall python3 screen -dmS ServerBot python3 bot.py
Vérifiez à nouveau que tout fonctionne correctement:

En appuyant sur le bouton sous le message, le bot doit répéter la commande à partir de laquelle le message a été envoyé.
Au lieu d'une conclusion
Bien sûr, cette méthode ne prétend pas remplacer les méthodes de connexion classiques, mais elle vous permet de connaître rapidement l'état du serveur et de lui envoyer des commandes qui ne nécessitent pas de sortie complexe.