Run commands on a linux server with a telegram bot
Beschreibung #
Dieses Projekt gibt Ihnen die Möglichkeit, Shell-Befehle auf einem Linux-Host von einem Telegramm-Bot aus auszuführen.
Funktionen:
/run: Shell-Befehle ausführen/status: Status eines Dienstes prüfen/wake: Wecken von Clients in Ihrem Netzwerk mit WakeOnLan- Wählen Sie zwischen whitelist oder blacklist für die Befehle, die Sie ausführen möchten. Sie können der Liste im Setup Befehle hinzufügen.
- Protokollierung: Überprüfen Sie das
bot_activity.log, um zu sehen, ob jemand etwas Böses versucht.
Benutze diesen Bot vorsichtig! Gib keine gefährlichen Befehle an ihn weiter.
Beispiele #
/run:
/wake (WakeOnLan):
whitelist:
Logging:
Getestet mit:
- Debian 12 Server
- Python3: python-telegram-bot==21.10, cryptography==44.0.1
- Telegram
Erste Schritte #
Abhängigkeiten #
- Linux-Server mit Root-Shell-Zugang
- Python3 auf dem Server installiert
- Telegram bot
Installieren #
Telegram: #
Holen Sie sich ein Telegram-Bot-Token:
-
Sie benötigen einen Telegram-Bot. Senden Sie dazu den Befehl
/newbotan BotFather. Sichern Sie Ihren Token. -
Füge die verwendeten Befehle mit
/setcommandszu deinem Bot hinzu:run - einen Befehl auf Ihrem Server ausführen wake - weckt einen Client mit WakeOnLan auf status - Status eines Dienstes abfragen
Holen Sie sich Ihre Telegram-Benutzer_id:
- Senden Sie die Nachricht
/startan userinfobot, um Ihre Benutzerkennung zu erhalten. Sichern Sie Ihre user_id.
Auf Ihrem Linux-Server: #
- Sicherheitshinweis: Erstellen Sie einen neuen Benutzer mit geringen Rechten, um den Bot auszuführen (Beispiel: „tgbot“).
Sie können ihn als root ausführen, aber ich empfehle dringend, einen Benutzer mit geringen Rechten zu verwenden!sudo adduser tgbot - Installiere die Abhängigkeiten:
# Debian/Ubuntu sudo apt install python3 python3-pip python3-venv wakeonlan - Klone das Repository, erstelle ein Verzeichnis für das Log und ändere die Berechtigungen für deinen Benutzer mit niedrigen Rechten
git clone https://github.com/thetorminal/telegram-servermanager.git # Geben Sie Ihrem neuen Benutzer die Rechte für die Skripte und melden Sie sich als tgbot an chown -R tgbot:tgbot telegram-servermanager && su - tgbot cd telegram-servermanager - Erstellen Sie eine neue python3-Venv und aktivieren Sie diese
mkdir venv python3 -m venv venv Quelle venv/bin/activate - Installieren Sie die python3 Anforderungen
pip install -r requirements.txt - Führen Sie setup.py aus, um die Einrichtung zu starten. Sie werden nach Ihrem
bot-tokenund Ihreruser_idgefragt.
Wählen Sie, ob Sie die Blacklist verwenden und weitere Befehle hinzufügen wollen.
Wählen Sie Clients, die mit WakeOnLan geweckt werden können und Dienste, deren Status überprüft werden kann.python3 setup.py - Nachdem das Setup abgeschlossen ist, kann man den Bot mit telegram_servermanager.py starten
python3 telegram_servermanager.py
Telegram-Bot: #
- Nach dem Start von
telegram_servermanager.pysollte dein Bot `Willkommen! Benutze /runum einen Shell-Befehl auf Deinem Server auszuführen. - Jetzt können Sie Befehle mit
/runausführen, WakeOnLan mit/wakebenutzen und den Status Ihrer konfigurierten Dienste mit/statusüberprüfen!
Protokollierung: #
- Sie können Ihr Log mit
tail -f bot_activity.logim telegram-servermanger Verzeichnis einsehen.
Führen Sie den Servermanger als Dienst aus #
Erstellen Sie die Datei /etc/systemd/system/tg-servermanager.service mit folgender Eingabe. Ersetzen Sie /path/to durch den Pfad, in dem sich das Verzeichnis telegram_servermanager befindet.
[Einheit]
Beschreibung=Telegram Servermanager
Nach=Netzwerk.Ziel
[Dienst]
ExecStart=/path/to/telegram-servermanager/venv/bin/python /path/to/telegram-servermanager/telegram_servermanager.py
WorkingDirectory=/pfad/zu/telegram-servermanager/
Neustart=immer
Benutzer=tgbot
Gruppe=tgbot
[Installieren]
WantedBy=multi-user.target
Jetzt können Sie den Dienst über systemctl wie jeden anderen benutzen!
systemctl start tg-servermanager.service
Fehlersuche #
Wenn Sie Probleme haben, überprüfen Sie bitte:
- ob Ihr Telegram-Bot-Token und Ihre user_id korrekt sind
- Stellen Sie sicher, dass die Berechtigungen für die Skripte korrekt sind.
- führen Sie die Datei
setup.pyerneut aus - überprüfen Sie die Log-Datei in Ihrem telegram-servermanager Verzeichnis (
bot_activity.log)
To-Do #
- Sicherheit: eine sicherere Lösung für die Ausführung von sudo-Befehlen finden, vielleicht mit einem Wrapper-Skript mit kontrollierten Rechten
- Benutzer können eigene Befehle für den Bot im Setup zur Whitelist hinzufügen
- Befehle zur Verwaltung von Docker-Containern hinzufügen?
Danksagungen #
- Github - xgaia/serverbot für Inspiration
- Reddit: die
r/selfhostedcommunity - ChatGPT für die Hilfe