ฉันได้อ่านคำถามมากมายที่ถามไปแล้วที่นี่ แต่อย่างใดไม่มีอะไรที่ทำงานให้ฉัน ฉันมีสคริปต์ทุบตีที่ฉันต้องส่งรหัสผ่านที่ฐานข้อมูลการถ่ายโอนข้อมูลในเครื่องระยะไกลดังนั้นมันชอบ:
!/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('
จากนั้นรวมไฟล์นั้นในสคริปต์ทุบตี:
!/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 จากไฟล์แล้วเกิดข้อผิดพลาดอีกครั้งของอักขระที่ไม่ถูกต้อง
คำแนะนำใด ๆ ที่ฉันหายไป?