J'ai lu beaucoup de questions déjà posées ici, cependant, en quelque sorte, rien ne fonctionne pour moi. J'ai un script bash où je dois envoyer un mot de passe qui sauvegarde la base de données sur la machine distante, donc c'est comme:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
Maintenant, la chose est que ce mot de passe a toutes sortes de caractères spéciaux:
#8111*@uu(
Si je lance la commande ci-dessus directement en utilisant un mot de passe entre guillemets simples, alors cela fonctionne: ie.
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
Sans guillemets simples, j'obtiens une erreur avec le '(' à la fin.
J'ai également essayé d'échapper des caractères dans le mot de passe comme ceci:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
Ensuite, il donne une erreur d'accès refusé.
J'ai aussi essayé d'utiliser "source" ie. enregistrer le mot de passe dans un autre fichier sous:
Fichier pass.cre
MYPASSWORD='#8111*@uu('
Puis en incluant ce fichier dans le script bash:
!/bin/sh
source pass.cre
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p$MYPASSWORD my_database | gzip -c > my_database.sql.gz
Il semble lire $ MYPASSWORD à partir du fichier, puis à nouveau une erreur de caractère non valide.
Un conseil ce qui me manque?