1

我正在尝试自动将一些文件从我的 Linux 服务器上传到支持 FTP 的 Windows 服务器。我成功地使用 SFTP 手动执行此操作,然后发出put命令。但是,当从 cron 调用时,我的脚本会一直停止输入密码。

以下是我尝试使用的代码:

#!/usr/bin/expect
#!/bin/sh
clear
spawn sftp remoteuser@43.123.0.10
expect "password"
send "world"
expect eof

就目前而言,它每次都停止请求密码。为什么没有send "world"完成密码对话框?

更新:

#!/usr/bin/expect
#!/bin/sh
clear
spawn sftp remoteuser@43.123.0.10
expect "remoteuser@43.123.0.10's password:"
send "world"
expect eof

现在我收到以下错误:

xml_reports.sh: line 5: spawn: command not found
couldn't read file "remoteuser@43.123.0.10's password:": no such file or directory
xml_reports.sh: line 7: send: command not found
couldn't read file "eof": no such file or directory
4

3 回答 3

4

试试这样:

#!/bin/bash
expect -c "
spawn sftp remoteuser@XX.XX.XX.XX
expect \"password\"
send \"PASSWORD\r\"
interact "

示例:http ://www.techtrunch.com/scripting/lazy-admins-part-2

于 2013-01-04T15:44:52.193 回答
0

运行时需要使用参数。阅读这篇文章。它解释了如何正确地做到这一点。

于 2013-01-04T15:32:49.093 回答
0

发生的事情是 Expect 仍在等待模式到达(直到超时),可能是“密码”不在 sftp 的提示中,它可能是“密码”或其他东西。

于 2013-01-04T15:33:23.177 回答