os.execute, curl et double quotes

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

os.execute, curl et double quotes

Message par dokho »

Bonsoir,

J'ai un problème avec un script dans lequel j'appelle, via curl, une url contenant des doubles quotes:

Code : Tout sélectionner

os.execute('curl http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt="HELLO WORLD"')
J'ai essayé pas mal de combinaison mais sans succès ... si une âme charitable pouvait m'indiquer la solution :)


Merci.
Chrominator
Messages : 1042
Inscription : 19 déc. 2015, 07:29
Localisation : France

Re: os.execute, curl et double quotes

Message par Chrominator »

As-tu essayé ce qui suit ?

Code : Tout sélectionner

os.execute('curl http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt=%22HELLO WORLD%22')
Un bon frein vaut mieux que deux sparadraps.

Ubuntu 24.04.3 LTS - Domoticz 2025.1 (build 16782)
Pentium G3220T 2.6GHz - 4Go DDR3
RFXtrx433 USB Ver Pro1/1043
Z-Stick GEN5 Version: 1.6-1136-g07ea22bb
Rtl433 RTL-SDR receiver
RFLink Gateway
Zigbee SLZB-06
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: os.execute, curl et double quotes

Message par dokho »

Chrominator a écrit :As-tu essayé ce qui suit ?

Code : Tout sélectionner

os.execute('curl http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt=%22HELLO WORLD%22')
Bonjour,

Essayé à l'instant et ça ne fonctionne pas :(
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: os.execute, curl et double quotes

Message par vil1driver »

Salut,

Code : Tout sélectionner

-- encode du texte pour le passer dans une url
function url_encode(str)
  if (str) then
    str = string.gsub (str, "\n", "\r\n")
    str = string.gsub (str, "([^%w %-%_%.%~])",
        function (c) return string.format ("%%%02X", string.byte(c)) end)
    str = string.gsub (str, " ", "+")
  end
  return str	
end

local txt = "hello world"

os.execute('/usr/bin/curl -m 15 "http://192.168.x.XXX/control?cmd=NEXTION,tempatelier.txt='..url_encode(txt)..'" &')
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: os.execute, curl et double quotes

Message par dokho »

Salut vil1driver,

Je viens de tester: ça ne fonctionne pas non plus :(
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: os.execute, curl et double quotes

Message par vil1driver »

alors le problem est ailleurs,

teste déjà les choses dans un navigateur..
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: os.execute, curl et double quotes

Message par dokho »

Dans un navigateur ou en ligne de commande dans une console ça passe nickel

Envoyé de mon SM-N9005 en utilisant Tapatalk
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: os.execute, curl et double quotes

Message par vil1driver »

bah si tu sais quelle commande va bien, utilise la dans le script...
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: os.execute, curl et double quotes

Message par dokho »

Ce n'est pas aussi simple que ça ...

Ceci fonctionne dans un navigateur:

Code : Tout sélectionner

http://192.168.0.239/control?cmd=NEXTION,tempatelier.txt="hello"
Ceci fonctionne dans un terminal:

Code : Tout sélectionner

curl 'http://192.168.0.239/control?cmd=NEXTION,tempatelier.txt="test"'
Mais ça dans un script je n'arrive pas à trouver ce qui fonctionne ... :(
dokho
Messages : 685
Inscription : 28 déc. 2014, 19:32

Re: os.execute, curl et double quotes

Message par dokho »

La commande qui permet de régler l'éclairage de l'écran fonctionne sans problème dans le script:

Code : Tout sélectionner

os.execute('curl http://192.168.0.239/control?cmd=NEXTION,dim=0')
Le problème vient des doubles quotes, je ne sais pas comment les passer ... et j'aimerais éviter de passer par un script bash ou du mqtt ...
Répondre