FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: boesemani am 05 Juni 2017, 00:02:44

Titel: [Gelöst]Shell Befehl in DOIF Ausführungsteil
Beitrag von: boesemani am 05 Juni 2017, 00:02:44
Ich möchte, sobald der Wert für eine Variable gesetzt (hier der Dummy POE_tinker) ist, das ein Shell Befehl ausgeführt wird, der ein POE-Port meines Switches hochschaltet. Der Shellbefehl alleine funktioniert in fhem auch. Nur in meinem DOIF scheint ein Problem zu sein, was ich nicht erkennen kann.

#define POE_Tinker_ein DOIF ([POE_tinker] eq "on") {system('snmpset -v2c -c private 192.168.179.100 1.3.6.1.2.1.105.1.1.1.3.1.3 i 1&');;()}
So nimmt fhem den Befehl gar nicht an

#define POE_Tinker_ein DOIF ([POE_tinker] eq "on") ({system('snmpset -v2c -c private 192.168.179.100 1.3.6.1.2.1.105.1.1.1.3.1.3 i 1&');;()})
So passiert nichts.
Jemand ne Idee?
Titel: Antw:Shell Befehl in DOIF Bedingung
Beitrag von: amenomade am 05 Juni 2017, 00:13:25
Bei mir funktionieren beide (allerdings mit system('ls &') als Befehl).
Was bedeutet
Zitat
So nimmt fhem den Befehl gar nicht an
? Was ist die Fehlermeldung?


EDIT: ein list vom DOIF wäre auch hilfreich.
Titel: Antw:Shell Befehl in DOIF Bedingung
Beitrag von: KernSani am 05 Juni 2017, 00:28:16
Idee Nr.1: code immer in code tags (das # oben im Editor), macht das Ganze lesbarer.
Idee Nr.2: Subject ändern in "Shell Befehl in DOIF Ausführungsteil)
Idee Nr.3: Was meinst du mit "So nimmt fhem den Befehl garnicht an"? Am besten postest du relevante Log-Einträge (wenn vorhanden) oder ein list des DOIF.
Idee Nr.4: system liefert vermutlich -1 zurück, was von DOIF als Fehler interpretiert wird... Probier das mal mit backticks (`)




Titel: Antw:Shell Befehl in DOIF Bedingung
Beitrag von: amenomade am 05 Juni 2017, 01:07:07
Zitat
Idee Nr.4: system liefert vermutlich -1 zurück, was von DOIF als Fehler interpretiert wird

Deswegen das ";;()" am Ende ;)
Titel: Antw:Shell Befehl in DOIF Bedingung
Beitrag von: Ellert am 05 Juni 2017, 08:00:51
Warum "system" und nicht ""? Siehe https://fhem.de/commandref_DE.html#command
Titel: Antw:Shell Befehl in DOIF Ausführungsteil
Beitrag von: boesemani am 05 Juni 2017, 17:05:24
Hallo Zusammen,
die vielen Hinweise konnte ich gerade verarbeiten. Vielen Dank für die Vorschläge.
Der Hinweis "SHELL-Befehle (diese müssen von doppelten Anführungszeichen "" eingeschlossen werden) " war sehr wertvoll, aber auch, das man Systembefehle lediglich in " " setzt.
Zu guter Letzt klammert das DOIF auch noch in () ein, so dass folgender, funktionierender Befehl resultiert:

#define POE_Tinker_aus DOIF ([POE_tinker] eq "off") ("snmpset -v2c -c private 192.168.179.100 1.3.6.1.2.1.105.1.1.1.3.1.3 i 2&")

Vielen Dank an alle Mitwirkende. Das hat im Feeling echt was gebracht.
Titel: Antw:Shell Befehl in DOIF Ausführungsteil
Beitrag von: KernSani am 05 Juni 2017, 18:43:22
:-) Das nächste Mal dann noch Code in codetags und bitte beim ersten Post noch [Gelöst] vorne ans Subject dran
Titel: Antw:Shell Befehl in DOIF Ausführungsteil
Beitrag von: KernSani am 05 Juni 2017, 22:59:40
Bitte Threads nicht schließen, dann haben andere User noch die Möglichkeit Folgefragen zu stellen...