Page 1 sur 1

[RESOLU]curl avec une variable commo URL

Publié : 08 févr. 2016, 14:02
par valdoison
Bonjour,
J'utilise beaucoup le shell BASH et l'API/JSON pour ma programmation sur DOMOTICZ.

tous les envois par CURL sont du style:
curl -s "http://login:MoDePasse@127.0.0.1:8080/json.xlm? suivi de diverses commandes"
Je voulais faire ceci

#!/bin/bash
login="http://login:MoDePasse@127.0.0.1:8080/json.xlm?"
curl -s '$login'suivi de diverses commandes'

et donc ne pas a avoir à recopier la première partie un peu fastidieuse.
J'ai essayé avec ${login}, avec simple cote, double cote, ...
Au mieux il ne se passe rien, sinon il est renvoyé:<html><head><title>Not Found</title></head><body><h1>404 Not Found</h1></body></html>

La suite serait d’enregistrer dans un fichier le "login", pour pouvoir le récupérer facilement dans chaque script et aussi simplifier la modification du login et du mot de passe.

Je ne comprend pas pourquoi cela ne fonctionne pas.

Si vous avez une explication elle sera la bienvenue.

Re: curl avec une variable commo URL

Publié : 08 févr. 2016, 15:23
par rimram31
curl -s "${login}suivi de diverses commandes" devrait marcher:

- pas de quote pour ${login} qui, avec cette syntaxe, peut-être inséré n'importe ou
- par contre surtout pas de simple quote dans le paramètre de curl car il demande justement explicitement au shell de ne pas substituer et de prendre la chaîne de caractère telle quelle.

Sache aussi qu'en shell tu peux utiliser des fonctions et les "sourcer" (source <filename>) dans différents scripts.

Re: curl avec une variable comme URL

Publié : 08 févr. 2016, 16:22
par valdoison
A priori cela ne fonctionne pas.
La réponse est:<html><head><title>Not Found</title></head><body><h1>404 Not Found</h1></body></html> et le périphérique ne change pas de status.

Re: curl avec une variable commo URL

Publié : 08 févr. 2016, 17:25
par Neutrino
/json.xlm?
C'est pas plutôt

Code : Tout sélectionner

/json.htm?
?

Re: curl avec une variable commo URL

Publié : 08 févr. 2016, 18:01
par valdoison
Une erreur de frappe.....

Merci, ça fonctionne.