Я читал много вопросов, уже заданных здесь, однако, почему-то ничего не работает для меня. У меня есть сценарий 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 из файла, затем снова ошибка недопустимого символа.
Любой совет, что мне не хватает?