Gänsefüßchen escapen

Begonnen von zensbert, 09 Dezember 2022, 12:34:24

Vorheriges Thema - Nächstes Thema

zensbert

Hi,
ich habe einen curl Befehl den ich verwenden will; aber ich schaffs nicht sauber die Gänsefüßchen zu escapen. auf der shell sieht der Befehl so aus:

curl --data '{"message":"Fenster EG noch offen"}' --user user:secret https://api.getnotify.me/submit

in fhem wäre das ja dann ungefähr so:

{system("curl  --data '{"message":"Fenster EG noch offen"}' --user user:secret https://api.getnotify.me/submit")}

aber ich bekomm nur syntax error auch wenn ich mit \ die " escapen möchte bzw. " mit '' ersetze.. jemand eine Idee?

Danke im Voraus!

ch.eick

Hallo,
falls Du noch mehrere von den API Aufrufen hast, wäre das HTTPMOD eine schöne Integration.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

zensbert

Eigentlich eben nur den einen.. da wäre eine schnelle einfache lösung nett..

frank

probier mal den system aufruf durch backticks zu ersetzen: `...`
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

Hi,

versuch mal so:
{system( q(curl  --data '{"message":"Fenster EG noch offen"}' --user user:secret https://api.getnotify.me/submit) )}

Ist das der einzige Perl Befehl oder steht in dem Zusammenhang mehr? Sonst geht es auch im FHEM Syntax:
https://fhem.de/commandref_modular_DE.html#command

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

betateilchen


sub test {
  my $a = '{"message":"Fenster EG noch offen"}';
  system("curl --data '$a' --user user:secret https://api.getnotify.me/submit");
}


Das liefert bei mir zumindest mal keinen Fehler.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

zensbert

Erstmal danke für die Infos; ja es werden noch weitere Befehle ausgeführt.. und wie ich nun gelesen habe (danke Otto123) geht das wohl nicht:

Achtung: unterschiedlicher Befehlsarten (FHEM/Shell/perl) in einer Kommandozeile sind nicht unterstützt, auch wenn es in manchen Fällen funktioniert.

ich leg mal n dummy oder so an den ich trigger und dann mal schauen.. geb nochmal Rückmeldung!

zensbert

Das Verpacken des System-Befehls in einen Dummy, das normale escapen via \ und der finale Aufruf des Dummys als FHEM-Befehl in der DOIF haben nun einwandfrei geklappt. Vielen Dank für eure Hilfe!