Czytałem już wiele pytań tutaj zadanych, jednak jakoś nic mi nie działa. Mam skrypt bash, w którym muszę wysłać hasło, które zrzuca bazę danych na zdalnym komputerze, więc wygląda to tak:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p#8111*@uu( my_database | gzip -c > my_database.sql.gz
Chodzi o to, że to hasło ma wiele znaków specjalnych:
#8111*@uu(
Jeśli uruchomię powyższą komendę bezpośrednio w powinienem użyć hasła w pojedynczych cudzysłowach, to zadziała: tj.
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'#8111*@uu(' my_database | gzip -c > my_database.sql.gz
Bez pojedynczych cytatów pojawia się błąd oznaczający „(” na końcu.
Próbowałem także uciec od znaków w haśle:
!/bin/sh
/usr/bin/ssh -p 91899 user@remoteHost mysqldump -u db_user -p'\#8111\*\@uu(' my_database | gzip -c > my_database.sql.gz
Następnie daje błąd odmowy dostępu.
Próbowałem także użyć „źródła”, tj. zapisywanie hasła w innym pliku jako:
Plik pass.cre
MYPASSWORD='#8111*@uu('
Następnie dołączając ten plik do skryptu 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
Wygląda na to, że odczytuje $ MYPASSWORD z pliku, a następnie błąd nieprawidłowego znaku.
Jakaś rada, której mi brakuje?