sftp 使用 expect 自动传输文件不工作

sftp using expect to automate file transfer not working

我想自动执行以下命令以传递密码并继续文件传输。

#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 not open while executing "send "THE_PASSWORD\r""

可能是什么问题?不考虑备选方案:例如sshpasslftpprivate keys...

考虑在您尝试进行交易的两台服务器上创建私钥,然后尝试做同样的事情,它应该有效

如果它不使用 expect,如下所示。

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