我继承了一个已有 20 年历史的交互式命令行 unix 应用程序,该应用程序不再受到其供应商的支持。我们需要自动化这个应用程序中的一些任务。
其中最麻烦的是创建数千个参数略有不同(例如不同的标识符、不同的名称)的新记录。必须按顺序创建记录,一次一个,手动完成这将花费数月(因此也需要花费大量资金)。在大多数情况下,创建记录具有键入命令、读取响应、键入更多命令等的非常可预测的模式。但是,某些记录创建操作将导致错误条件(“具有此标识符的记录已存在”),需要一组不同的命令优雅地退出。
我可以看到几种不同的方法来做到这一点:
命名管道。编写一个 Perl 脚本,运行目标应用程序并将 STDIN 和 STDOUT 设置为命名管道,然后向目标应用程序发送命令序列以创建具有所需参数的记录,然后指示目标应用程序退出并关闭。然后,我们使用不同的参数根据需要多次运行脚本。
应用。寻找另一个可用于编写交互式程序脚本的 Unix 工具。我唯一能找到的是expect,但这似乎并没有得到维护;和聊天,我记得很久以前,它似乎或多或少地做了我想要的,但似乎只用于控制调制解调器。
还有一个潜在的复杂性:我认为目标应用程序是为 VT100 终端编写的,它使用某种转义序列来执行诸如提供突出显示之类的操作。
我的问题是我应该采取什么方法?其中之一,还是完全不同的东西?我非常喜欢使用命名管道然后拥有一个 Perl 脚本来打开 FIFO 并根据需要进行读写的想法,因为它提供了很大的灵活性,但从我所读的内容来看,如果我走这条路。
提前致谢。