bash - 下载完成之前使用 SFTP 和 mget 完成的 Shell 脚本

标签 bash shell ftp sftp expect

这是我的脚本:

#!/usr/bin/expect
spawn /usr/bin/sftp user@place
expect "password:"
send "mysecret\n"
expect "sftp>"
send "mget dir/*.csv\n";
expect "sftp>"
send "quit\n"

它开始下载,但几秒钟后,它会发送退出命令并在下载完成之前退出程序。

我成功停止它的唯一方法是输入一个“交互”命令,但因为我想将其作为一个 cron 作业运行,所以我不想只生成最终闲置的进程。

有办法实现这一点吗?

编辑:

有人会问为什么我没有 key 设置...这是供应商允许我的唯一方法。

最佳答案

添加行设置超时 -1 似乎已解决此问题

整个脚本应该如下所示:

#!/usr/bin/expect
set timeout -1
spawn /usr/bin/sftp user@place
expect "password:"
send "mysecret\n"
expect "sftp>"
send "mget dir/*.csv\n";
expect "sftp>"
send "quit\n"

关于bash - 下载完成之前使用 SFTP 和 mget 完成的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372078/

相关文章:

bash - 使用 bash 或 DOS 在两个列表之间查找不匹配的项目

bash - 将输出分配给变量时获取管道的退出代码(命令替换)

shell - 在 POSIX sh 中,当输入是连续的(事件观察器)时,如何保留在 'while read' 循环中设置的变量?

java - cloud foundry 将路由从一个应用程序复制到另一个应用程序

linux - Proftpd 完全隐藏目录

c# - 通过 FTP 下载文件时,用空格包装文件名的正确方法是什么

linux - 即时输出重定向,在程序仍在运行时查看文件重定向输出

linux - 如何在已安装的 RPM 包中进行多重搜索?

shell - 在 shell 终端中输入引号 "会发生什么

bash - 如何使用 Bash 脚本将 (FTP) 文件上传到服务器?