나는 이미 여기에서 많은 질문을 읽었지만 어쨌든 아무것도 효과가 없습니다. 원격 컴퓨터에서 데이터베이스를 덤프하는 암호를 보내야하는 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를 읽은 다음 유효하지 않은 문자 오류가 다시 나타납니다.
내가 누락 된 조언이 있습니까?