sftp использует ожидаемую автоматизацию передачи файлов не работает - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу автоматизировать приведенную ниже команду, чтобы передать пароль и продолжить передачу файла.

#This command works well but it will require password
echo "put This_file_from_server_a.csv /TO/THIS/SERVER_B/PATH" | sftp remote@10.11.12.13

Я пытался использовать expect, чтобы автоматизировать / отправить пароль автоматически, но это не работает, т. е.

expect -c 'spawn "put This_file_from_server_a.csv /TO/THIS/SERVER_B/PATH" | sftp remote@10.11.12.13; expect "assword:"; send "THE_PASSWORD\r"; interact'

Я получаю сообщение об ошибке

send: spawn id exp4 не открывается при выполнении команды "send" THE_PASSWORD \ r ""

В чем может быть проблема? без рассмотрения альтернатив: таких как sshpass, lftp, private keys ...

1 Ответ

1 голос
/ 28 февраля 2020

Рассмотрите возможность создания закрытых ключей на обоих серверах, для которых вы пытаетесь выполнить транзакцию, затем попробуйте сделать то же самое, это должно работать

в случае, если оно не использует ожидаемое значение, как показано ниже.

expect  <<'END_EXPECT'
set timeout -1
spawn sftp remote@10.11.12.13
expect "assword:"
send "THE_PASSWORD\r"
expect "sftp>"
send "put This_file_from_server_a.csv /TO/THIS/SERVER_B/PATH\r"
expect "sftp>"
send "quit\r"
expect eof
END_EXPECT
...