使用bash将命令发送到LFTP,然后保持交互模式

时间:2017-06-15 12:11:18

标签: linux bash shell lftp

原谅措辞; 15年来没有用bash做过任何事情。

我正在尝试编写一个shell脚本,它将运行并连接到lftp,然后执行几个命令,具体来说:

set ftp:ssl-force on
set ftp:ssl-protect-data on
set ssl:verify-certificate no

然后我想留在lftp内部以便我可以发送其他命令(例如,我不知道我要下载什么文件名,直到我可以在远程目录上执行ls)。

当我尝试将一个bash脚本编写为管道命令到lftp时,它可以工作,但是当它到达脚本的最后一行时也会立即退出lftp。有没有办法防止这种情况发生?

2 个答案:

答案 0 :(得分:2)

使用lftp的-e选项:

lftp -e 'set ftp:ssl-force on; set ftp:ssl-protect-data on; set ssl:verify-certificate no'

根据lftp的手册页:

   -e commands
          Execute given commands and don't exit.

答案 1 :(得分:0)

脚本后的concat stdin

cat yourscript /dev/stdin | your_tftp_command

cat也接受-作为stdin的特殊文件名参数

cat yourscript - | your_tftp_command