WOL - [UPDATE] FHEM bleibt nach SSH-Befehl hängen

Begonnen von Pimp.my.PC, 28 März 2016, 01:44:43

Vorheriges Thema - Nächstes Thema

Pimp.my.PC

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

Reinerlein

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

Pimp.my.PC

#2
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

Reinerlein

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

Pimp.my.PC

#4
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

Reinerlein

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

Pimp.my.PC

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)

Pimp.my.PC

So,

ssh -p 45 fhem@192.168.127.5 'sudo shutdown -P 2' löst das Problem nun. :)

LG
Sebastian