[Curl] problème d'interprétation des quotes

problème d'interprétation des quotes [Curl] - Divers - Programmation

Marsh Posté le 27-01-2015 à 09:53:39    

Bonjour,
 
J'ai un problème pour faire interpréter un script curl sous mon serveur linux de type centos 6, en clair je n'arrive pas à faire interpréter les quotes puisque dès que mon code ne possède pas de quotes, j'ai bien une réponse correcte à mon code.
Pourriez-vous m'aider SVP ?
 
Pour info mais c'est pas le problème: API_CODE est normalement remplacé par une chaine de plusieurs caractères
 
Avec les doubles quotes:
 

Code :
  1. [root@super ~]# curl -k "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE"


Voici la réponse:

Code :
  1. curl: (3) [globbing] illegal character in range specification at pos 90


 
Avec les simples quotes:

Code :
  1. [root@super ~]# curl -k 'https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE'


Même retour:

Code :
  1. curl: (3) [globbing] illegal character in range specification at pos 90


 
Merci

Reply

Marsh Posté le 27-01-2015 à 09:53:39   

Reply

Marsh Posté le 27-01-2015 à 10:47:59    

J'ai essayé ça aussi mais rien à faire:
 

Code :
  1. [root@nagios]# curl -k "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name=\"vsys1\"]/address/entry[@name=\"Spastic\"]&key=API_KEY"


curl: (3) [globbing] illegal character in range specification at pos 90
 

Code :
  1. [root@nagios ]# curl -k 'https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name=\"vsys1\"]/address/entry[@name=\"Spastic\"]&key=API_KEY'


curl: (3) [globbing] illegal character in range specification at pos 90
 
 
 
:??:


Message édité par alandon le 27-01-2015 à 10:48:16
Reply

Marsh Posté le 27-01-2015 à 11:22:04    

Ben a la position 90, c'est un @ que tu as, et c'est manifestement ça qui ne lui plait pas.
Il y a peut être un élément de réponse ici: http://stackoverflow.com/questions [...] -post-data
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-01-2015 à 11:37:53    

gilou a écrit :

Ben a la position 90, c'est un @ que tu as, et c'est manifestement ça qui ne lui plait pas.
Il y a peut être un élément de réponse ici: http://stackoverflow.com/questions [...] -post-data
A+,


 
 
Même en remplaçant tous mes caractères comme ceci: ça ne fonctionne pas et la position reste toujours la même:
@ = %40
& = %26
 
 

Code :
  1. [root@nagios ]# curl -k "https://192.168.0.254/api/?type=config%26action=get%26xpath=/config/devices/entry/vsys/entry[%40name='vsys1']/address/entry[%40name='Spastic']%26key=API_KEY"


 
curl: (3) [globbing] error: bad range specification after pos 94
 
 
Aussi avec des variables:

Code :
  1. [root@nagios ]# export A="&action"
  2. [root@nagios ]# export B="&xpath"
  3. [root@nagios ]# export C="'vsys1'"
  4. [root@nagios ]# export D="@name"
  5. [root@nagios ]# export E="&key"


 

Code :
  1. curl -k "https://192.168.0.254/api/?type=config$A=get$B=/config/devices/entry/vsys/entry[$D=$C]/address/entry[$D='Spastic']$E=API_KEY"


 
curl: (3) [globbing] illegal character in range specification at pos 90


Message édité par alandon le 27-01-2015 à 11:48:23
Reply

Marsh Posté le 27-01-2015 à 15:39:32    

Mais pourquoi n'as tu pas essayé comme indiqué dans le lien
curl -k --data-urlencode "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE"
 
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-01-2015 à 16:05:40    

gilou a écrit :

Mais pourquoi n'as tu pas essayé comme indiqué dans le lien
curl -k --data-urlencode "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE"
 
 
A+,


 
 
Bah je ne sais pas ce qui me manque, je suis sous centos 6:
 

Code :
  1. [root@nagios ~]# curl -k --data-urlencode "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE"


curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information

Code :
  1. [root@nagios ~]# curl -k --data-urlencode 'https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE'


curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
 

Reply

Marsh Posté le 27-01-2015 à 16:07:40    

et sans quotes autour?

curl -k --data-urlencode https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE


A+,

Message cité 1 fois
Message édité par gilou le 27-01-2015 à 16:08:25

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-01-2015 à 16:23:32    

gilou a écrit :

et sans quotes autour?

curl -k --data-urlencode https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE


A+,


 
 
C'est un petit mieux sans les quotes autour mais vraiment un petit peu  :)  
 

Code :
  1. [root@nagios ~]# curl -k --data-urlencode https://192.168.0.254/api/?type=con [...] vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_KEY


[1] 3423
[2] 3424
[3] 3425
[2]-  Done                    action=get
[root@nagios  ~]# curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
 
[1]-  Exit 2                  curl -k --data-urlencode https://192.168.0.254/api/?type=config
[3]+  Done                    xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']
[root@nagios  ~]#

Reply

Marsh Posté le 27-01-2015 à 16:26:53    

Et pas vraiment mieux en remplaçant les caractères
 

Code :
  1. [root@nagios ~]# curl -k --data-urlencode https://192.168.0.254/api/?type=con [...] vsys/entry[%40name='vsys1']/address/entry[%40name='Spastic']%26key=API_KEY


curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information

Code :
  1. [root@nagios  ~]# curl -k --data-urlencode "https://192.168.0.254/api/?type=config%26action=get%26xpath=/config/devices/entry/vsys/entry[%40name='vsys1']/address/entry[%40name='Spastic']%26key=API_KEY"


curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
 

Reply

Marsh Posté le 27-01-2015 à 18:08:37    

> Et pas vraiment mieux en remplaçant les caractères  
surtout pas avec --data-urlencode
J'essaierais ceci à tout hasard:

curl -k --data-urlencode https://192.168.0.254/api/?type=config&action=get&xpath="/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']"&key=API_CODE


vu que c'est ton xpath qui semble coincer ici.
 
autre possibilité a tenter:

curl -k -g --data-urlencode https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE


parce que [] n'est pas autorisé dans la syntaxe des urls et est interprété par curl comme autre chose
C'est d'ailleurs ce qui provoquait ton message d'erreur initial: curl: (3) [globbing] illegal character in range specification at pos 90
en effet, après un [, curl attends quelque chose de la forme nombre_début-nombre_fin] et nom pas un truc avec un @
 
A+,


Message édité par gilou le 28-01-2015 à 14:35:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 27-01-2015 à 18:08:37   

Reply

Marsh Posté le 28-01-2015 à 14:52:52    

Pas mieux:
 

Code :
  1. [root@nagios ~]# curl -k --data-urlencode https://192.168.0.254/api/?type=con [...] vsys/entry[@name='vsys1']/address/entry[@name='Spastic']"&key=API_KEY


[1] 14447
[2] 14448
[3] 14449
[root@nagios ~]# curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
 
[1]   Exit 2                  curl -k --data-urlencode https://192.168.0.254/api/?type=config
[2]-  Done                    action=get
[3]+  Done                    xpath="/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']"
[root@nagios ~]#
 
 
 
 

Code :
  1. [root@nagios ~]# curl -k -g --data-urlencode https://192.168.0.254/api/?type=con [...] vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_KEY


[1] 15513
[2] 15514
[3] 15515
[root@nagios ~]# curl: no URL specified!
curl: try 'curl --help' or 'curl --manual' for more information
 
[1]   Exit 2                  curl -k -g --data-urlencode https://192.168.0.254/api/?type=config
[2]-  Done                    action=get
[3]+  Done                    xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']
[root@nagios ~]#


Message édité par alandon le 28-01-2015 à 14:53:25
Reply

Marsh Posté le 28-01-2015 à 15:29:44    

Il y a avait eu un essai en remplaçant :
@ = %40  
 
Peut-être il faudrait continuer dans cette voix en remplaçant aussi les crochets
[=%5B
]=%5D
 
Par contre, il n'est pas sûr qu'il faille remplacer & = %26 car c'est un caractère valide pour une URL, tout comme le point d'interrogation.

Reply

Marsh Posté le 28-01-2015 à 15:52:19    

Donc tester ceci:

curl -k "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry%5B%40name='vsys1'%5D/address/entry%5B%40name='Spastic'%5D&key=API_CODE"


et

curl -k -g  "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE"


qui fait peut être la même chose en plus simple
 
A+,

Message cité 1 fois
Message édité par gilou le 28-01-2015 à 16:01:36

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-01-2015 à 15:56:57    

>> C'est un petit mieux sans les quotes autour mais vraiment un petit peu
Euh non finalement pas, j'ai compris les messages avec [1] [2]...: le shell a compris les & comme autant de séparateurs de process en background  :D  
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-01-2015 à 16:54:43    

gilou a écrit :

Donc tester ceci:

curl -k "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry%5B%40name='vsys1'%5D/address/entry%5B%40name='Spastic'%5D&key=API_CODE"


et

curl -k -g  "https://192.168.0.254/api/?type=config&action=get&xpath=/config/devices/entry/vsys/entry[@name='vsys1']/address/entry[@name='Spastic']&key=API_CODE"


qui fait peut être la même chose en plus simple
 
A+,


 
Les deux fonctionnent ! C'est chouette !  
MERCI BEAUCOUP pour ton aide  :jap:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed