Команда sftp put не работает в сценарии оболочки - PullRequest
1 голос
/ 05 января 2012

Я пытаюсь создать сценарий оболочки, который создает дамп mysql, а затем помещает его на другой компьютер. Я уже настроил ssh и sftp без ключа. Приведенный ниже сценарий создает файл дампа mysql на локальном компьютере при запуске и не выдает никаких ошибок, однако файл «dbdump.db» никогда не помещается на удаленный компьютер. Если я выполню соединение sftp и введу команду вручную, то это сработает.

содержимое mysql_backup.sh

mysqldump --all-databases --master-data > dbdump.db
sftp -b /home/tim tim@100.10.10.1 <<EOF
put dbdump.db
exit
EOF

Ответы [ 3 ]

3 голосов
/ 05 января 2012

Попробуйте использовать scp, что должно быть проще в вашем случае.

scp dbdump.db tim@100.10.10.1:/home/tim/dbdump.db

И sftp, и scp используют SSH.

1 голос
/ 05 января 2012

Пожалуйста, запишите команду mput / put в один файл (file_contains_put_command) и попробуйте команду ниже.

sftp2 -B file_contains_put_command /home/tim tim@100.10.10.1 >> log_file

Пример:

echo binary > sample_file
echo mput dbdump.db >> sample_file
echo quit >> sample_file
sftp2 -B sample_file /home/tim tim@100.10.10.1 >> log_file
0 голосов
/ 18 февраля 2014

Хотя ваш первоначальный подход не работает несколько символов.Вы говорите sftp читать его пакетные команды из / home / tim -b /home/tim.Таким образом, если вы измените это на -b -, он должен прочитать командные команды из stdin.

Что-то вроде этого, если -b / home / tim предназначено для удаленного изменения каталога, вы можете добавить cd /home/tim на ваш документ здесь.

mysqldump --all-databases --master-data > dbdump.db
sftp -b - tim@100.10.10.1 <<EOF
put dbdump.db
exit
EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...