qx bringt seltsame Einträge im logfile

Begonnen von hdosw, 23 November 2021, 14:17:08

Vorheriges Thema - Nächstes Thema

hdosw

Hallo an alle,

ich habe in einem notify den Befehl
{system('/opt/fhem/mycfg/scripts/netpower.sh set 2 on');;}
umgestellt auf
{qx (curl -s --user user:pw --data F1=O http://ip-adr/ctrl.htm);;}

Mit dem systemaufruf funktioniert alles mit korrektem Eintrag im log, mit dem qxaufruf hab ich diesen log-eintrag:

2021.11.22 16:48:19 3: Anel_SD_02_dummy_off return value: ���`I�%&/m�{J�J��t��`$ؐ@������iG#)�*��eVe]f@�흼��{���{���;�N'���?\fdl��J�ɞ!���?~|?"���j�^��t�.ʣ��<�����/N���n����/Z��}t�M���I�l��(�/����e�=�WE�zYg����O߭�:o��;ܰ-�2?:~q�|����
��m�����˫�����w�   �-���t^����j<mZ���}Դ�e����(ŀ?���ߵw��5ӺX�iSO?�8���������ߕ���?j�I���b���?�Y�;�T�,�����M����Ϊ=�%�2������L��uZ-�W�쳏�߿�/�>�x���wi� ��"oi�����}M���?��θX.���o�x���p%��9�qn�3��>z���i�5�g�����v�^��:��� �=#��GӪ��G?�駟zxH���l6+����}t��Ye��;;�>�(-h �@)jp�F�G�ӷ��ɗ���U^fEc=�� �����w|�t�sb�]ዻv�j�2���<��(���죣��tog�^�����m�����wWG�c�

Kann man dies irgendwie verhindern? Hab schon einiges versucht leider ohne Erfolg.

Viele Grüße
Dieter

Otto123

Hallo Dieter,

qx liefert Dir das Ergebnis von curl zurück, Du trägst diese Rückgabe offenbar irgendwo "Anel_SD_02_dummy_off" ein.
Der Logeintrag ist ein "normaler" 3: Anel_SD_02_dummy_off return value: ...

Wo/wie genau rufst Du das qx() Konstrukt auf?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hdosw

#2
Hallo Otto,

das wird von einem DoIf aufgerufen. Die Rawdefinition sieht so aus:

defmod Anel_SD_02_dummy_off notify Anel_SD_02_dummy:off {qx (curl -s --user user:pw --data F1=O http://ip-Adr/ctrl.htm);;}

setstate Anel_SD_02_dummy_off 2021-11-22 16:52:35
setstate Anel_SD_02_dummy_off 2021-11-22 16:40:18 state active
setstate Anel_SD_02_dummy_off 2021-11-22 16:52:35 triggeredByDev Anel_SD_02_dummy
setstate Anel_SD_02_dummy_off 2021-11-22 16:52:35 triggeredByEvent off



vorher hab ich mit einem systemaufruf ein Shell-Script gestartet und das shellscript wollte ich durch diesen qx ersetzen.
Wenn ich den Befehl auf der shell starte kommt kein return.

Gruß
Dieter

Otto123

#3
Hallo Dieter,

was kommt zurück wenn Du den Befehl in die FHEM Kommandozeile wirfst?
{qx (curl -s --user user:pw --data F1=O http://192.168.178.34:88/ctrl.htm);;}

Du kannst versuchen die Ausgabe Deines Befehls umleiten:
{qx (curl -s --user user:pw --data F1=O http://192.168.178.34:88/ctrl.htm > /dev/null)}

Allerdings finde ich das Konstrukt so nicht sinnvoll. Der Befehl wirkt blockierend, wenn Du nichts zurück erwartest ist das uU nicht sinnvoll.
Du kannst auch einfach den FHEM Shell Befehl nehmen, der blockiert nicht:
defmod Anel_SD_02_dummy_off notify Anel_SD_02_dummy:off "curl -s --user user:pw --data F1=O http://ip-Adr/ctrl.htm > /dev/null"
Etwas zum lesen aus meinen Notizen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hdosw

#4
derselbe Kauderwelsch  :( wie im logfile

Die Umleitung hab ich auch schon versucht klappt leider auch nicht.

Werde den shell-Befehl testen. Danke Dir.

Gruß
Dieter


Otto123

So umleiten?
2>&1> /dev/null
Der Shell  Befehl wird auch ins Logfile schreiben  ::)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hdosw

Der Befehl funktioniert aber egal wie ich umleite es kommt immer der datenmüll im log  :(
Hast Du noch eine Idee?

Otto123

Ja :) mach es wie bisher im Script. Ich sehe keinen Sinn darin, kein Script zu verwenden.

Hier gab es das Thema auch schon https://forum.fhem.de/index.php?topic=58673.15
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

hdosw

ok Danke für Deine Mühe und Zeit  :)

Viele Grüße aus FFB
Dieter

Otto123

Hallo Dieter,

ich weiß nicht ob Du noch meine Ergänzung in #3 gesehen hast.
Ich habe da selbst auch lange rumprobiert - mein gedankliches Resüme: wenn es mehr wie eine Hand voll Positionen in der Kommandozeile gibt wird es stressig. ;)
- Hochkommas verschachteln
- stdOut / Umleitung
- Variablennamen auflösen/schützen
- Parameter ans nächste Programm weiterreichen
- und und und

Ich glaube, man kann es noch etwas abmildern wenn man die Zeile an bash -c 'Kommandofolge' übergibt. Aber da hat man schon wieder eine Ebene mehr.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz