写入交互式提示

写入交互式提示

我正在使用ftp命令行工具,并且希望将脚本输入与用户输入结合起来。仅当用户输入时,提示符如下所示:

ftp>

但是当我尝试用脚本插入一些输入时,比如

{echo "user username passwd"; cat;} | ftp -n server.tld

我如何强制ftp(或任何 cli)仍然使用交互模式?

我更喜欢基于标准 shell 工具的解决方案。

答案1

有一个与交互式命令行工具交互的程序,与ftp示例完全相同:expect。它是一个专门的脚本外壳,扩展了脚本语言tcl

它非常强大,但您可能会在没有了解它的所有内容的情况下就逃脱。一个非常有用的工具是autoexpect,它可以将交互式会话记录为期望脚本。录制的脚本当然有助于理解基础知识。

脚本expect可以与交互式程序(例如ftp.这可以与用户和交互式程序的交互相结合。使用脚本interact中的命令expect,可以暂时将控制权交给用户。
当用户拥有控制权时,脚本仍然侦听事件以收回控制权,因此实际上,用户和脚本都在与程序同时交互。

相关内容