Bonjour,

je dois récupérer des informations se trouvant dans une base mysql distante d'un serveur web sous ISPconfig. Les infos dont j'ai besoin de trouvent dans la base MySQL d'isponfig qui est dbispconfig. Et je veux des infos de la table web_domain.

Manque de chance les concepteurs de cette base ont appelé un champ ssl, or c'est un mot réservé MySQL. Quand je me connecte en local à MySQL je peux lancer une requête en utilisant des quotes inversées :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select `ssl` from web_domain;
Ça fonctionne.

Mais là je dois lancer la requête en ssh depuis un script tournant sur une autre machine, et là je n'arrive pas à trouver comment échapper ce champ pour qu'il ne génère pas d'erreur.

si j'écris ma commande ssh pour interroger mysql comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sshCommand="echo \"select ssl,ssl_letsencrypt from dbispconfig.web_domain where domaine like '%${nomDom}%';\" | mysql -N -u${user} -p'${mdp}'"
et que je lance l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
remoteDatasChain=$(ssh server.exemple.com "${sshCommand}")

j'obtiens l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ssl,ssl_letsencrypt from dbispconfig.web_domain where domain like '%domain.tld%'' at line 1
Si je la lance avec juste le champ ssl_letsencrypt alors il n'y a pas d'erreur.

si j'essaye de rajouter des backquotes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sshCommand="echo \"select `ssl`,ssl_letsencrypt from dbispconfig.web_domain where domain like '%${nomDom}%';\" | mysql -N -u${user} -p'${mdp}'"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
go-test.sh: ligne9: ssl : commande introuvable
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ssl_letsencrypt from dbispconfig.web_domain where domain like '%domain.tld%'' at line 1
là j'ai en plus une erreur bash, normal puisqu'il croit que je lui demande d'exécuter la commande ssl.

Donc j'essaye d'échapper mes ` :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sshCommand="echo \"select \`ssl\`,ssl_letsencrypt from dbispconfig.web_domain where domain like '%${nomDom}%';\" | mysql -N -u${user} -p'${mdp}'"
toujours la même erreur.

j'essaye alors de mettre mes ` entre quotes ' :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
sshCommand="echo \"select '`ssl`',ssl_letsencrypt from dbispconfig.web_domain where domain like '%${nomDom}%';\" | mysql -N -u${user} -p'${mdp}'"
Là, plus d'erreur MySQL, c'est un progrès, mais toujours l'erreur bash qui veut à tout prix exécuter la commande ssl :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
go-test.sh: ligne9: ssl : commande introuvable
(les champs en question sont des enum avec y ou n)

Mais en fait en echotant ma requête ssl est remplacé par ' ' donc pas d'erreur mais pas de valeur...

Donc ma question : quelqu'un sait-il comment je peux proprement me tirer de cette situation ?