无法使用Expect通过远程服务器中的sftp转换所有文件

时间:2018-11-15 07:09:48

标签: linux bash sftp expect

我正在尝试借助mput实用工具将/Test/XML/目录中存在的所有文件expect放入远程sftp服务器。

我在/ Test / XML /目录中大约有320个文件。

每个文件的大小约为0.1 MB。

没有观察到错误。

这是我的代码:

cd /Test/XML/

/usr/bin/expect <<EOF
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /test\r"
expect "sftp>"
send "mkdir XML\r"
expect "sftp>"
send "cd /test/XML\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF 

但是这里的问题是mput *仅传输4个文件,而不是传输所有320个文件。 不确定,为什么它不能传输远程服务器中的所有320个文件。

非常欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

感谢@ThiruShetty在set timeout -1实用程序中使用expect的提示。

实际上,我有很多文件(〜320-350)要传输(sftp)到远程服务器。 使用sftp实用工具正常执行expect后,它只能传输几个文件,而不是我想要的所有文件。

set timeout -1内插入expect后,它解决了超时问题。

这是最终代码:

cd /Test/XML/

/usr/bin/expect <<EOF
set timeout -1
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /test\r"
expect "sftp>"
send "mkdir XML\r"
expect "sftp>"
send "cd /test/XML\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF