Ich habe viele Fragen gelesen, die hier bereits gestellt wurden, aber irgendwie funktioniert nichts für mich. Ich habe ein Bash-Skript, in dem ich ein Passwort senden muss, das die Datenbank auf einem Remotecomputer ausgibt.
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
Nun hat dieses Passwort alle möglichen Sonderzeichen:
#8111*@uu(
Wenn ich den obigen Befehl direkt in soll ausführen und das Passwort in einfachen Anführungszeichen verwenden, funktioniert es: dh.
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
Ohne einfache Anführungszeichen erhalte ich am Ende einen Fehler mit dem '('.
Ich habe auch versucht, Zeichen im Passwort wie folgt zu umgehen:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
Dann wird der Fehler "Zugriff verweigert" angezeigt.
Ich habe auch versucht, "Quelle" zu verwenden, dh. Speichern des Passworts in einer anderen Datei als:
Datei pass.cre
MYPASSWORD='#8111*@uu('
Fügen Sie dann diese Datei in das Bash-Skript ein:
!/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
Es scheint $ MYPASSWORD aus der Datei zu lesen, dann wieder Fehler eines ungültigen Zeichens.
Irgendwelche Ratschläge, was mir fehlt?