WoL_Telegrambot

  • Ziel des Projektes

    Der WoL (Wake on Lan) Telegram Bot lässt Geräte mithilfe von Magic Pakete starten.


    Nach Senden eines Botkommandos an den Telegrambot erhält man eine Liste von allen in der wol_cfg.toml eingetragenen Geräte. Nach Auswahl eines Gerätes wird das Gerät mit einem generierten Magic Paket gestartet. Anschließend wird von arp die zugehörige IP-Adresse ermittelt und versucht das Gerät zu pingen. Ist der Ping in einer bestimmten Zeit erfolgreich, oder nicht oder lässt sich die IP nicht ermitteln erhält man die entsprechende Nachricht.


    Das zu startende Gerät muss für Wake on Lan konfiguriert sein. Wie dies für das entsprechende Gerät einzurichten ist,

    kann an dieser Stelle nicht erklärt werden aufgrund der Vielfalt an Geräten.


    Die weitere Installation und Inbetriebnahme ist ausführlich auf Github beschrieben.

    Hier gehts zur Github Projektseite


    Der aktuelle Code (Stand 01.06.2021)

    Konstruktive Kritik und Verbesserungsvorschläge gerne willkommen.


    WoL_Bot Funktionsdemo

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Die Verzögerung bis der Bot antwortet liegt an dem time.sleep(5) in Zeile 176. Wer eine schnellere Reaktionszeit wünscht, muss nur diese Zeit verringern.


    Warum das Ganze?

    Bisher musste ich mich, um meinen PC aus der Ferne starten zu können zunächst per VPN ins Heimnetz einwählen. Anschließend auf der Fritzbox einloggen, Heimnetzwerk auswählen, dann Netzwerk, passendes Gerät raussuchen und auf bearbeiten klicken. Zuletzt runter scrollen und die Schaltflächen "Computer jetzt starten" oder so ähnlich drücken.

    Da finde ich das jetzt mit dem Telegrambot komfortabler :thumbup:


    Weiteres

    Genauers zum Erstellen eines Telegrambotes kann man hier nachlesen: Mein Weg zu einem Telegrambot mit Python

  • Interessant, dass mindestens noch ein weiteres Projekt auf dem Raspberry die Aufgabe löst, ein Device im LAN per WOL zu starten. Deine Beschreibung ist sehr ausführlich und gut gelungen, sie spornt zum Nachbau an.


    Mir ist beim Realisieren meines Projektes message2action aufgefallen, dass ich immer mal wieder neue Chat-Member in meinem Telegram-Chat gefunden habe. Das konnte ich zwar beheben aber ein ungutes Gefühl ist dennoch geblieben, dass sich das wiederholt. Ich habe bei mir eine Überprüfung eingebaut, welcher Chat-Member mir etwas zuschickt. Wenn der Member unbekannt ist, bekommen alle bekannten Chat-Member eine Warnung zugestellt. Meine Empfehlung wäre daher, dass Du auch so eine Prüfung einbaust, damit nicht "Fremde" die Kontrolle über Deine Geräte übernehmen können. Als Alarmierungsweg kannst Du ja auch noch EMail verwenden.


    Für mich ist neu, dass man via arp von einer MAC-Adresse auf die IP-Adresse schließen kann, das kann ich vielleicht für mein Projekt gebrauchen. Momentan speichere ich zu jeder MAC-Adresse noch die IP-Adresse oder Hostnamen ab, damit ich sprechende Namen habe.

    Mein Github-Repository ist hier zu finden.

    • Official Post

    Dafür gibt es bei mir eine Liste der erlaubten User und eine Funktion, die "neugierigen Spaßvögeln" eine Nachricht sendet. ;)


    Der Code ist in Anlehnung an: Mein Weg zu einem Telegrambot mit Python


    Sollte mich wundern, wenn Hofei das nicht nachträglich eingebaut hätte.

  • Dafür gibt es bei mir eine Liste der erlaubten User und eine Funktion, die "neugierigen Spaßvögeln" eine Nachricht sendet.


    So etwas habe ich mir auch überlegt aber dann schnell fallen gelassen: wenn ich so etwas zurücksende, dann weiß der Absender, dass er einen "Treffer" gelandet hat. Und dieses Wissen könnte dem Absender einen Vorteil verschaffen, den ich nicht gewähren will.

    Mein Github-Repository ist hier zu finden.

  • Hallo,


    Meine Empfehlung wäre daher, dass Du auch so eine Prüfung einbaust, damit nicht "Fremde" die Kontrolle über Deine Geräte übernehmen können.

    So eine Prüfung ist im Code schon enthalten in Zeile 158/159. In der zugehörigen Konfigurationsdatei gibt es den Eintrag allowed_ids, welche eine Liste mit Telegramids beinhaltet, welche mit dem Bot arbeiten dürfen. Ist die ID nicht in dieser Liste enthalten, sendet die Funktion Nachrichten Handler ein Permission Denied an den Absender und kehrt zur Hauptschleife zurück. Botkommandos oder ähnliches werden gar nicht erst abgearbeitet.

    Als Alarmierungsweg kannst Du ja auch noch EMail verwenden.

    Eine Alarmierung ist im Code jedoch noch nicht integriert, aber ein guter Vorschlag, könnte der Konfigurationsdatei eine ID hinterlegen, welche solche Benachrichtungen erhalten soll, dann muss man nicht den Umweg über eMail gehen sondern sendet sich die Alarmierung direkt mit dem Telegrambot.


    So etwas habe ich mir auch überlegt aber dann schnell fallen gelassen: wenn ich so etwas zurücksende, dann weiß der Absender, dass er einen "Treffer" gelandet hat.

    Guter Einwand, das würde ich mit meinem Permission Denied auch schon machen.

    Meines Wissens kann man aber nicht mit einem Bot direkten Kontakt mit einem anderen Bot aufnehmen. Der Bot selbst besitzt ja keine Telegramid sondern nur den Token. Gemeinsamer Kontakt funktioniert nur in gemeinsame Gruppen. Dort würden sie sich dann aber schon kennen.

    Ein User der mit dem Bot Kontakt aufnimmt, kennt den Bot ja dann sowieso schon weil er auf @<Botname> in Telegram geklickt hat und dadurch schon gesehen hat, dass der Bot mit dem Namen existent ist.

    • Official Post

    So etwas habe ich mir auch überlegt aber dann schnell fallen gelassen: wenn ich so etwas zurücksende, dann weiß der Absender, dass er einen "Treffer" gelandet hat. Und dieses Wissen könnte dem Absender einen Vorteil verschaffen, den ich nicht gewähren will.

    Was den Treffer betrifft, sehe ich auch so wie Hofei . Davon abgesehen, dass ich keine Standards wie /start oder /stop verwende, wüste ich auch nicht wo da sonst ein Vorteil entstehen könnte. Solange dessen ID nicht in der Liste steht, kann dieser User nichts ausrichten, außer natürlich meinen Bot beschäftigen. Wenn es zu viel wird, könnte man solche "Angriffe" auch mit ID und Usernamen Datum usw. loggen und ggf. melden.

    Eine weitere Möglichkeit wäre einfach einen neuen Bot erstellen (und den anderen löschen).