Hallo,
ich möchte gerne per WOL-Modul via SSH einen entfernten Linux-Rechner herunterfahren.
Hier mein Define:
define WOL_Shutdown WOL f4:f2:6d:56:d7:96 192.168.127.5 EW 5
attr WOL_Shutdown shutdownCmd { system("ssh fhem\@192.168.127.5 sudo systemctl poweroff") };;{Log 1, "Shutdown: alarm" }
attr WOL_Shutdown sysCmd /usr/sbin/etherwake
Leider funktioniert es nicht, da auf dem entfernten Rechner SSH unter Port 45 anstatt Port 22 läuft.
Kann mir bitte jemand sagen, wie ich einen alternativen Port angebe? IP-ADRESSE:PORT funktioniert leider nicht.
LG
Sebastian
Hi Sebastian,
bei ssh muss man den Port als Parameter "-p" angeben.
Versuch mal
attr WOL_Shutdown shutdownCmd { system("ssh -p 45 fhem\@192.168.127.5 sudo systemctl poweroff") };;{Log 1, "Shutdown: alarm" }
Grüße
Reiner
Hat funktioniert, vielen Dank! :)
Allerding habe ich nun das Problem, dass er den Poweroff-Befehl absetzt, der entfernte Rechner auch herunterfährt, FHEM dann allerding komplett hängen bleibt.
HTOP auf der FHEM-Maschine zeigt auch dass Pearl immernoch den SSH-Befehl ausführt...
1310 fhem 20 0 24628 21464 1948 S 0.0 2.2 13h17:49 ├─ perl fhem.pl fhem.cfg
17818 fhem 20 0 5740 2260 1776 S 0.0 0.2 0:00.73 │ └─ ssh -p 45 fhem@192.168.127.5 sudo systemctl poweroff
Was kann ich dagegen tun?
LG
Sebastian
Hi Sebastian,
vielleicht kannst du einfach einen zweiten Befehl absetzen, der die Verbindung wieder trennt.
Geht es denn mit
attr WOL_Shutdown shutdownCmd { system("ssh -p 45 fhem\@192.168.127.5 sudo systemctl poweroff && exit") };;{Log 1, "Shutdown: alarm" }
?
Grüße
Reinerlein
Nein, das klappt leider nicht, er bleibt beim Shutdown-Befehl hängen.
Erwartet er da irgendeine Antwort vom entfernten Rechner, die nicht kommt?
EDIT: Wenn ich den Befehl
ssh -p 45 fhem\@192.168.127.5 sudo poweroff
direkt über die Shell am FHEM-Rechner mit den User fhem ausführe, bleibt auch da die shell hängen.
LG
Sebastian
Hi Sebastian,
ich fürchte, dass er die beiden &-Zeichen nicht an den entfernten Rechner überträgt, sondern für den lokalen ssh-Befehl verwendet.
Ob eine Eingabe erwartet wird, kannst du ja einfach testen, indem du den ssh-Befehl selber aufrufst (ohne das shutdown-Kommando), und dort in der Shell (dann ja auf dem entfernten Rechner) das shutdown absetzt. Im Normalfall braucht er nur kurz, und kommt dann zurück auf die shell, wo kurz danach dann alles beendet wird.
Ich denke, dass dieses Prozessende der entfernten Shell nicht richtig bei dir ankommt, deswegen ja die Idee mit dem exit... sozusagen vor dem Tod der entfernten Shell schnell selber korrekt beenden...
Versuch es mal mit maskieren der entfernt auszuführenden Befehlszeile:
attr WOL_Shutdown shutdownCmd { system("ssh -p 45 fhem\@192.168.127.5 'sudo systemctl poweroff && exit'") };;{Log 1, "Shutdown: alarm" }
Grüße
Reinerlein
Leider funktioniert das auch nicht. Er bleibt immer sofort hängen.
Andere Befehle kann ich ausführen:
ssh -p 45 fhem@192.168.127.5 sudo nano Test.txt
funktioniert einwandfrei. (Diesmal alles direkt aus der Schell des FHEM-Rechners getestet)
So,
ssh -p 45 fhem@192.168.127.5 'sudo shutdown -P 2'
löst das Problem nun. :)
LG
Sebastian