Dienstag, 17. November 2020

Wake On Lan über "Dritte"

Zum Thema Wake On Lan habe ich ja schon ein paar Artikel geschrieben. Es gibt Situationen, da erreicht das Magic Paket nicht direkt sein Ziel. Falls also auch der "directed Broadcast" nicht funktioniert, ist vielleicht der "Agent" im Zielnetz eine Lösung!?

Auslöser für diese Notiz war dieser Beitrag im Forum.

Ein Magic Paket aus einer MAC Adresse zu bauen ist keine große Wissenschaft, dieses Paket muss man dann einfach per UDP und Port 9 ins Zielnetz schicken. Viel Code ist zur Lösung nicht nötig, das Meiste ist wie immer das User Interface und Fehlerbehandlung. 

Mir fallen drei Lösungsansätze ein, alle benötigen keine erhöhten Rechte!

Voraussetzung: ssh Verbindung mit public Key ist eingerichtet und funktioniert!

Linux Host

Auf der Suche nach einem simplen Script bin ich nur bei einer Perl Lösung fündig geworden, eine Lösung mit netcat werde ich noch bereitstellen. 

Das Setup auf dem "Remote Agenten" kann man dann auch gleich per ssh machen:

ssh user@host 'wget -qO wakeonlan https://raw.githubusercontent.com/jpoliv/wakeonlan/master/wakeonlan;chmod +x wakeonlan'

Das Script wird heruntergeladen und ausführbar gemacht. Dann ist die Verwendung simpel: 

  • mac Adresse übergeben
  • Parameter -q für quiet Modus
  • Parameter -i für eine directed Broadcast Adresse.
ssh user@host ./wakeonlan -q 12:34:56:AB:CD:EF

Windows Host

Ich hatte da mal ein PowerShellScript gemacht. Windows kann auch ssh, also kann man auch per ssh die Einrichtung und Steuerung vornehmen.

Fritzbox und TR064

Falls die Fritzbox als zentraler Router dient und die MAC Adressen dort registriert sind, kann man auch die Fritzbox benutzen um das Gerät per WOL zu starten. Per FHEM geht das simpel. Es gibt auch Powershellscripte dafür.

get <FritzBoxName> tr064Command Hosts:1 hosts X_AVM-DE_WakeOnLANByMACAddress NewMACAddress "12:34:56:78:9A:BC"

Definition in FHEM

Das WOL Modul in FHEM bietet mittlerweile den CMD Modus. Hier kann man separate Befehle zum aufwecken angeben, das Ganze auch über ssh (siehe den Link oben). 

In wolCmd steht ein FHEM Befehl. Der Platzhalter $MAC wird bei der Ausführung durch die mac Adresse in der Definition ersetzt.

Beispiel mit der Fritzbox:

Das Gerät muss in der Fritzbox registriert sein! Die Fritzbox kann Broadcast nur im eigenen Netzwerk! 

attr WolDevice wolCmd get Fritzbox tr064Command Hosts:1 hosts X_AVM-DE_WakeOnLANByMACAddress NewMACAddress $MAC

Beispiel mit Remote Host und ssh

Wir brauchen 3 Dinge - ausgeführt so als Block in der Raw Definition:

  1. Das Programm/Script auf dem Agenten,
  2. den Shell Befehl der auf dem Agenten ausgeführt werden soll,
  3. den sshHost in üblicher Form.

"ssh user@host 'wget -qO wakeonlan https://raw.githubusercontent.com/jpoliv/wakeonlan/master/wakeonlan;;chmod +x wakeonlan'"
attr WolDevice wolCmd "./wakeonlan -q $MAC"
attr WolDevice sshHost user@host


CodeSpace


Keine Kommentare:

Kommentar veröffentlichen