FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gernott am 20 September 2015, 09:58:11

Titel: [gelöst] Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: Gernott am 20 September 2015, 09:58:11
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.
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag 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
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: Gernott am 20 September 2015, 16:24:34
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.
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag 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

Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: P.A.Trick am 20 September 2015, 18:14:49
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)
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: Gernott am 20 September 2015, 18:39:02
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.
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: P.A.Trick am 20 September 2015, 18:41:06
Hast du ein exit in deinem Skript?
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: Gernott am 20 September 2015, 19:07:53
Ja, habe ich.
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag 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}
)
Titel: Antw:Rückmeldung -1 nach externem Skriptaufruf mit system
Beitrag von: Gernott am 20 September 2015, 19:56:15
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.