FHEM Forum

FHEM => Sonstiges => Thema gestartet von: zensbert am 09 Dezember 2022, 12:34:24

Titel: Gänsefüßchen escapen
Beitrag von: zensbert am 09 Dezember 2022, 12:34:24
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!
Titel: Antw:Gänsefüßchen escapen
Beitrag von: ch.eick am 09 Dezember 2022, 12:43:17
Hallo,
falls Du noch mehrere von den API Aufrufen hast, wäre das HTTPMOD eine schöne Integration.

VG   Christian
Titel: Antw:Gänsefüßchen escapen
Beitrag von: zensbert am 09 Dezember 2022, 12:46:18
Eigentlich eben nur den einen.. da wäre eine schnelle einfache lösung nett..
Titel: Antw:Gänsefüßchen escapen
Beitrag von: frank am 09 Dezember 2022, 13:44:54
probier mal den system aufruf durch backticks zu ersetzen: `...`
Titel: Antw:Gänsefüßchen escapen
Beitrag von: Otto123 am 09 Dezember 2022, 13:45:15
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
Titel: Antw:Gänsefüßchen escapen
Beitrag von: betateilchen am 09 Dezember 2022, 14:14:17

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.
Titel: Antw:Gänsefüßchen escapen
Beitrag von: zensbert am 09 Dezember 2022, 14:25:16
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!
Titel: Antw:Gänsefüßchen escapen
Beitrag von: zensbert am 09 Dezember 2022, 17:53:01
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!