私はすでにここで尋ねられた多くの質問を読んでいますが、どういうわけか私のために何も働いていません。リモートマシンのデータベースをダンプするパスワードを送信する必要があるbashスクリプトがあるので、次のようにします。
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
さて、このパスワードにはあらゆる種類の特殊文字が含まれています。
#8111*@uu(
上記のコマンドを単一引用符で囲んだパスワードを使用して直接実行すると、次のように機能します。
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
単一引用符がないと、最後の '('でエラーが発生します。
私もこのようにパスワードの文字をエスケープしようとしました:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
次に、アクセス拒否エラーが発生します。
私も「ソース」を使用しようとしました。パスワードを別のファイルに保存:
ファイルpass.cre
MYPASSWORD='#8111*@uu('
次に、そのファイルを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
ファイルから$ MYPASSWORDを読み取っているようですが、再び無効な文字のエラーが発生します。
何かアドバイスはありませんか?