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 :
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 :
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 :
remoteDatasChain=$(ssh server.exemple.com "${sshCommand}")
j'obtiens l'erreur :
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 :
sshCommand="echo \"select `ssl`,ssl_letsencrypt from dbispconfig.web_domain where domain like '%${nomDom}%';\" | mysql -N -u${user} -p'${mdp}'"
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 ` :
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 ' :
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 :
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 ?
Partager