Hallo
Ich rufe in einem DOIF folgende Anweisung auf:
(
{system "/home/pi/cam/cam1_motion.sh on &"}
)
Die Anweisung wird korrekt abgearbeitet und das Skript ebenso, allerdings steht danach im Log:
2015.09.20 09:54:25.813 5: Cmd: >{system "/home/pi/cam/cam1_motion.sh on &"}<
2015.09.20 09:54:25.859 2: act_on_CAM_motion_set: {system "/home/pi/cam/cam1_motion.sh off &"}: -1
Im DOIF erscheint diese Meldung auch im error-Reading als
{system "/home/pi/cam/cam1_motion.sh off &"}: -1
Hat jemand einen Rat, woran das liegt und wie man diese Meldung wegbekommt?
Viele Grüße
G.
Stichwort: "Returncode Bash Script"
Was gibt denn Dein Script bei erfolgreicher/fehlerhafter Ausführung zurück? ;D
Zitat von: Hollo am 20 September 2015, 12:23:14
Stichwort: "Returncode Bash Script"
Was gibt denn Dein Script bei erfolgreicher/fehlerhafter Ausführung zurück? ;D
Hallo Hollo
Guter Hinweis, danke. Es liegt offenbar am &, um den Prozeß im Hintergrund laufen zu lassen.
Ohne dieses gibt es keine Rückgabe in der ssh-Kommandozeile. Mit diesem & am Ende kommt dann z.B. die Ausgabe der Jobnummer und der PID "[1] 16833", was vermutlich zu diesem Fehler führt.
Hast Du eine Idee, wie man das lösen kann. Das Skript läuft einige Sekunden und soll FHEM nicht blockieren.
Gruß
G.
Ich weiss nicht, ob das aus fhem heraus funktioniert, aber Du könntest versuchen, alle Ausgaben des Scriptes "wegzuschmeissen"... &>/dev/null
Zitat von: Hollo am 20 September 2015, 16:58:56
Ich weiss nicht, ob das aus fhem heraus funktioniert, aber Du könntest versuchen, alle Ausgaben des Scriptes "wegzuschmeissen"... &>/dev/null
Das klappt nicht! Eim einfachsten ist einen von den beiden anderen Perl System Kommandos zu nehmen!
Nimm mal
qx(command)
Ich habe gerade mal qx probiert:
Beim Aufruf in der Kommandozeile von FHEM
{qx("/home/pi/cam/cam1_motion.sh off &")}
steht im Log ohne Zeitangabe:
sh: 1: /home/pi/cam/cam1_motion.sh off &: not found
Lasse ich die Anführungszeichen weg:
{qx(/home/pi/cam/cam1_motion.sh off &)}
schmierte mein FHEM ab und im Log fand sich
/home/pi/cam/cam1_motion.sh: Zeile 42: 17380 Beendet
Danach ließ sich FHEM nur über das killen der Prozesse wiederbeleben.
Hast du ein exit in deinem Skript?
Ja, habe ich.
das ist dein perl Rückgabewert, das sollte helfen:
(
{system "/home/pi/cam/cam1_motion.sh on &";;0}
)
Zitat von: rapster am 20 September 2015, 19:42:21
das ist dein perl Rückgabewert, das sollte helfen:
(
{system "/home/pi/cam/cam1_motion.sh on &";;0}
)
Genial, nun geht es ohne Fehlmeldung. Besten Dank!
Gruß
G.