Sehr oft gibt es Situationen, in denen hier und jetzt Zugriff auf den Server erforderlich ist. Eine SSH-Verbindung ist jedoch nicht immer der bequemste Weg, da der SSH-Client, die Serveradresse oder die Benutzer- / Kennwortverbindung möglicherweise nicht verfügbar sind. Natürlich gibt es
Webmin , das die Verwaltung vereinfacht, aber auch keinen sofortigen Zugriff bietet.
Also habe ich beschlossen, eine einfache, aber interessante Lösung zu implementieren. Um nämlich einen Telegramm-Bot zu schreiben, der, beginnend auf dem Server selbst, die an ihn gesendeten Befehle ausführt und das Ergebnis zurückgibt. Nachdem ich
mehrere Artikel zu diesem Thema studiert hatte, stellte ich fest, dass noch niemand solche Implementierungen beschrieben hat.
Ich habe dieses Projekt unter Ubuntu 16.04 implementiert, aber für einen problemlosen Start auf anderen Distributionen habe ich versucht, alles allgemein zu machen.
Bot Registrierung
Registrieren Sie einen neuen Bot bei @BotFather. Wir senden ihm
/newbot
und weiter im Text. Wir benötigen das Token des neuen Bots und Ihre ID (Sie können es beispielsweise von
@userinfobot erhalten ).
Python-Vorbereitung
Um den Bot zu starten, verwenden wir die
telebot
Bibliothek (
pip install pytelegrambotapi
). Unter Verwendung der
subprocess
wir Befehle auf dem Server aus.
Bot-Start
Erstellen Sie auf dem Server die Datei bot.py:
nano bot.py
Und fügen Sie den Code ein:
from subprocess import check_output import telebot import time bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
Wir ersetzen das darin enthaltene Bot-Token durch das von @BotFather ausgegebene und user_id durch den ID-Wert Ihres Kontos. Das Überprüfen der Benutzer-ID ist erforderlich, damit der Bot nur Ihnen Zugriff auf Ihren Server gewährt. Die Funktion
check_output()
führt den übergebenen Befehl aus und gibt das Ergebnis zurück.
Es bleibt nur der Bot zu starten. Um Prozesse auf dem Server zu starten, bevorzuge ich den
screen
(
sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(wobei "ServerBot" die Prozesskennung ist)
Der Prozess startet automatisch im Hintergrund. Gehen wir in den Dialog mit dem Bot und überprüfen, ob alles so funktioniert, wie es sollte:

Glückwunsch! Der Bot führt die an ihn gesendeten Befehle aus. Um nun Zugriff auf den Server zu erhalten, müssen Sie nur noch einen Dialog mit dem Bot öffnen.
Wiederholung von Befehlen
Um den Status des Servers zu überwachen, müssen Sie häufig dieselben Befehle ausführen. Daher ist die Implementierung der Wiederholung von Befehlen, ohne sie erneut zu senden, sehr unangebracht.
Wir werden mithilfe der Inline-Schaltflächen unter den Nachrichten implementieren:
from subprocess import check_output import telebot from telebot import types
Starten Sie den Bot neu:
killall python3 screen -dmS ServerBot python3 bot.py
Überprüfen Sie erneut, ob alles korrekt funktioniert:

Durch Drücken der Taste unter der Nachricht sollte der Bot den Befehl wiederholen, von dem die Nachricht gesendet wurde.
Anstelle einer Schlussfolgerung
Natürlich gibt diese Methode nicht vor, die klassischen Verbindungsmethoden zu ersetzen. Sie ermöglicht es Ihnen jedoch, schnell den Status des Servers zu ermitteln und ihm Befehle zu senden, die keine komplexe Ausgabe erfordern.