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
/newbot
an BotFather. Sichern Sie Ihren Token.Füge die verwendeten Befehle mit
/setcommands
zu 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
/start
an 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-token
und Ihreruser_id
gefragt.
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.py
sollte dein Bot `Willkommen! Benutze /runum einen Shell-Befehl auf Deinem Server auszuführen. - Jetzt können Sie Befehle mit
/run
ausführen, WakeOnLan mit/wake
benutzen und den Status Ihrer konfigurierten Dienste mit/status
überprüfen!
Protokollierung:#
- Sie können Ihr Log mit
tail -f bot_activity.log
im 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.py
erneut 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/selfhosted
community - ChatGPT für die Hilfe