Tôi đã đọc rất nhiều câu hỏi đã được hỏi ở đây, tuy nhiên, bằng cách nào đó, không có gì hiệu quả với tôi. Tôi có một tập lệnh bash nơi tôi phải gửi mật khẩu kết xuất cơ sở dữ liệu trên máy từ xa, vì vậy nó giống như:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
Bây giờ điều là mật khẩu này có tất cả các loại ký tự đặc biệt:
#8111*@uu(
Nếu tôi chạy lệnh trên trực tiếp sẽ sử dụng mật khẩu bên trong dấu ngoặc đơn thì nó hoạt động: tức là.
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
Nếu không có dấu ngoặc đơn, tôi sẽ gặp lỗi với '(' ở cuối.
Tôi cũng đã cố thoát các ký tự trong mật khẩu như thế này:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
Sau đó, nó cung cấp cho truy cập từ chối lỗi.
Tôi cũng đã thử sử dụng "nguồn" tức là. lưu mật khẩu trong một tệp khác như:
Tệp pass.cre
MYPASSWORD='#8111*@uu('
Sau đó bao gồm tệp đó trong tập lệnh 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
Có vẻ như đang đọc $ MYPASSWORD từ tệp sau đó lại gặp lỗi ký tự không hợp lệ.
Bất cứ lời khuyên nào tôi đang thiếu?