我的 Java 应用程序必须像这样工作:
- 用户在 GUI 中选择 bash 命令并按“发送”。
- 应用程序为每个命令返回不同且独立的答案(例如,我们可以将它们存储在不同的文件中)。
- 每个命令都以交互方式运行,而不是批量运行(不能像“ls\n pwd \n”等)
- 在每个命令之后,应用程序将等待并检查结果是否正常。如果是这样,它将发送下一个命令。
- 我们需要在远程主机上执行 su 。
我用过ExpectJ(对输出流做了一点修改)。它已经解决了第 1、3、4、5 点。
但是第 2 点存在问题。在我的应用程序中,我需要得到单独的答案。但我们不会知道它们的长度。命令提示符可以不同。任何人都知道如何“破解”ExpectJ,所以它会更加同步吗?我正在寻找这样的行为:发送,等待完整答案,发送,等待......我尝试了一些基本的同步技巧,但这通常会导致超时和连接丢失。
这个问题与我的老问题有关: