Saya telah membaca banyak pertanyaan yang sudah diajukan di sini, bagaimanapun, entah bagaimana tidak ada yang berhasil untuk saya. Saya memiliki skrip bash di mana saya harus mengirim kata sandi yang membuang basis data pada mesin jarak jauh, jadi seperti:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
Sekarang masalahnya adalah kata sandi ini memiliki semua jenis karakter khusus:
#8111*@uu(
Jika saya menjalankan perintah di atas secara langsung akan menggunakan kata sandi di dalam tanda kutip tunggal maka itu berfungsi: yaitu.
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
Tanpa tanda kutip tunggal saya mendapatkan kesalahan dengan untuk '(' di akhir.
Saya juga mencoba melarikan diri karakter dengan kata sandi seperti ini:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
Kemudian itu memberikan akses ditolak kesalahan.
Saya juga mencoba menggunakan "sumber" yaitu. menyimpan kata sandi di file lain sebagai:
File pass.cre
MYPASSWORD='#8111*@uu('
Kemudian termasuk file itu dalam skrip 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
Tampaknya membaca $ MYPASSWORD dari file sekali lagi kesalahan karakter yang tidak valid.
Ada saran apa yang saya lewatkan?