FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Rampler am 10 Juni 2016, 12:28:56

Titel: In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 12:28:56
Hallo zusammen,
habe meine Menueinträge damit erweitert:
attr WEB menuEntries shutdown_rpi,cmd={system('/opt/fhem/shutdown_rpi&')}

##!/bin/bash
# Shutdown Rasberry ...
perl /opt/fhem/fhem.pl 7072 "{fhem(Log 1,'Linux shutdown has been requested from WEBUI')}"


Bei Aufruf über Webui (klick) hängt sich FHEM auf.
Bei Aufruf über Putty funktioniert es einwandfrei.

Wa mache ich falsch ?
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 12:45:11
Fhem wartet auf eine Rückmeldung. Die kommt aber nicht wegen dem &
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 15:04:33
Sorry, das & hatte ich zu Testzwecken eingebaut, ohne geht es auch nicht. Ich muss nach aufruf von shutdown_rpi (wohl gemerkt, nur über die WebUI) den prozess shutdown_rpi killen, erst dann arbeitet fhem weiter ...
Starte ich shutdown_rpi über Putty kommt die Meldung ...
Sehr merkwürdig ..

Bei eingabe über putty:

klaus@Raspberry ~ $ perl /opt/fhem/fhem.pl 7072 "{fhem(Log 1,'Linux shutdown has been requested from WEEBUI')}"

2016.06.10 15:06:10 1: Linux shutdown has been requested from WEEBUI
2016.06.10 15:06:10 1: PERL WARNING: Use of uninitialized value $cmd in pattern match (m//) at fhem.pl line 921.


Per klick in der FHEM WEBGUI:

klaus@Raspberry ~ $ ps -e
  PID TTY          TIME CMD
    1 ?        00:00:01 init
   ......
2192 ?        00:00:00 perl
2196 pts/0    00:00:00 ps
klaus@Raspberry ~ $ sudo kill 2192
klaus@Raspberry ~ $

Dann läuft auch wieder FHEM ...


Merkwürdig finde ich auch die:
PERL WARNING: Use of uninitialized value $cmd in pattern match (m//) at fhem.pl line 921.
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 16:08:50
... auch bei eingabe von {system('/opt/fhem/shutdown_rpi')} hängt FHEM bis der Prozess gekillt wird ...
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 16:25:56
Mit:
{system('/opt/fhem/shutdown_rpi &')} in der Eingabezeile tuts jetzt, allerdings mit Menuentries nach wie vor nicht ..
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 16:31:31
Das wollte ich noch schreiben, ist mir auch eben am pc aufgefallen das du ein leerzeichen vergessen hast.

Mach mal besser so


qx(/opt/fhem/shutdown_rp &);


Und was willst Du jetzt für ein Menüeintrag?

Was steht denn in Deinem shutdown Script drin?

Grüße
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 17:27:20
Danke erstmal...
Möchte mal mein Problem übersichtlicher darstellen:
Bei eingabe von:
{system('/opt/fhem/shutdown_rpi &')}
in Commandfenster, funktioniert das script.

Bei Aufruf mit menuEntries:
attr WEb menuEntries shutdown_rpi,cmd={system('/opt/fhem/shutdown_rpi+&')}
bekomme ich den Fehler:
Unknown command {system('/opt/fhem/shutdown_rpi


Inhalte des Scripts:
#!/bin/bash
# Shutdown Rasberry ...
/opt/fhem/fhem.pl 7072 "{fhem(Log 1,'Linux shutdown has been requested from WEEBUI')}"
#/etc/init.d/fhem stop
#sudo shutdown -h now
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 17:44:51
Mach mal das Pluszeichen weg zwischen dem Befehl und dem Kaufmanns UND. Eventuell ist es das ja.
Und im Script machst du gaaanz am Ende ein exit 0. Vielleicht klappt es ja
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 17:50:56
Also habe das + entfernt, sieht nun so aus:
attr WEb menuEntries shutdown_rpi,cmd={system('/opt/fhem/shutdown_rpi &')}
Exit 0 im Script ist auch drinn...

Fehlermeldung:
Unknown command {system('/opt/fhem/shutdown_rpi, try help.

Muss doch möglich sein, da eine Leerstelle rein zu kriegen...
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 17:55:43
Mach mal an Stelle dem Leerzeichen ein %20
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 18:39:23
%20 ..shutdown_rpi,cmd={system('/opt/fhem/shutdown_rpi%20&')}
Unknown command {system('/opt/fhem/shutdown_rpi, try help.
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: ph1959de am 10 Juni 2016, 18:54:49
ist ewas gegen
{system("/opt...")}
statt
{system('/opt...')}
einzuwenden? Schon ausprobiert? Damit funktioniert zumindest bei mir ein "wget...&".

Peter
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: automatisierer am 10 Juni 2016, 18:56:14
seid ihr euch sicher, dass da die geschweiften Klammern drum müssen?
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 19:01:02
shutdown_rpi,cmd={system("/opt/fhem/shutdown_rpi%20&")}

==> leider auch net
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 19:03:09
shutdown_rpi,cmd=system("/opt/fhem/shutdown_rpi%20&")
nogo
shutdown_rpi,cmd=system('/opt/fhem/shutdown_rpi%20&')
nogo
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 19:04:20
Nimm mal die %20 raus, Leerzeichen rein und " machen.
Ansonsten weiß ich auch nicht. Warum nimmst nicht mein Kommand von oben? Ging nicht?
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: automatisierer am 10 Juni 2016, 19:05:37
und was steht im log?
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 19:12:14
Da mich das interessiert werde ich das nachher mal auf meinem Testsystem testen
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: automatisierer am 10 Juni 2016, 19:38:23
menuEntries
Comma separated list of name,html-link pairs to display in the left-side list. Example:
attr WEB menuEntries fhem.de,http://fhem.de,culfw.de,http://culfw.de
attr WEB menuEntries AlarmOn,http://fhemhost:8083/fhem?cmd=set%20alarm%20on

soweit die commandref...
sicher das es überhaupt funktionieren kann?
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: justme1968 am 10 Juni 2016, 20:00:02
das & muss auch url encoded werden.

am besten steckt man das kommando das auf der kommandozeile in fhem funktioniert komplett 1:1 in einen url encoder wie z.b. den hier: http://meyerweb.com/eric/tools/dencoder/ (http://meyerweb.com/eric/tools/dencoder/)

mit {system('/opt/fhem/shutdown_rpi &')} gibt das dann z.b. http://fhemhost:8083/fhem?cmd=%7Bsystem(%27%2Fopt%2Ffhem%2Fshutdown_rpi%20%26%27)%7D

das gleiche sollte direkt mit "shutdown -h now" oder "halt" oder jeder anderen variante auch gehen.

gruss
  andre
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: CoolTux am 10 Juni 2016, 20:18:45
Abend schön Andre,

Vielen Dank Dir. Hast den Abend gerettet  ;D
Wünsche Dir ein schönes WE



Grüße
Titel: Antw:In Bashscript FHEM Befehle
Beitrag von: Rampler am 10 Juni 2016, 23:33:14
Super, so funktioniert es ...
Danke für eure Hilfe !!!!
:) ;)