如何实施expect“;“互动”;使用java的命令
我想用java实现expect“interact”命令。在expect中,可以打开ssh会话、进行身份验证,然后使用“interact”命令将控制权交还给用户。java可以做到这一点吗?我尝试过使用expectJ、expect4J和expectForJava,但是几乎没有文档和示例说明如何做到这一点。蒂亚 更新:有关“交互”命令参考,请查看以下内容: “Interactive是一个Expect命令,用于控制当前 进程发送给用户,以便将击键发送到当前 进程,并且当前进程的stdout和stderr是 回来了。”如何实施expect“;“互动”;使用java的命令,java,unix,tcl,expect,expectj,Java,Unix,Tcl,Expect,Expectj,我想用java实现expect“interact”命令。在expect中,可以打开ssh会话、进行身份验证,然后使用“interact”命令将控制权交还给用户。java可以做到这一点吗?我尝试过使用expectJ、expect4J和expectForJava,但是几乎没有文档和示例说明如何做到这一点。蒂亚 更新:有关“交互”命令参考,请查看以下内容: “Interactive是一个Expect命令,用于控制当前 进程发送给用户,以便将击键发送到当前 进程,并且当前进程的stdout和stderr
这些库可能更适合您的需要: SSHJ JSCH
如果有人感兴趣,我已经添加了基本的交互式循环支持,从0.8版开始,我自己的开放源代码Expect for Java实现(抱歉自我升级) 以下是在Java 8中与系统输入流交互的示例:
try (final Expect expect = new ExpectBuilder()
.withInputs(System.in)
.build()) {
expect.interact()
.when(contains("abc")).then(r -> System.out.println("A"))
.when(contains("xyz")).then(r -> System.err.println("B"))
.until(contains("exit"));
System.out.println("DONE!");
}
System.in.close();
也许在这里?@SergeyBenner我在expect4J中找不到,从Java代码中,有人可以调用“interact”命令。Expect对象只有“Expect”和“send”方法。expectJ确实有一个明确的,但它不起作用(或者我不知道如何正确使用它)。@DaveJarvis我想看看。你是白手起家写的还是使用了现存的库?它有“交互”功能吗?@LeonardoKenji:试试这个Expect的
interact
在秘酱级别上相当高。祝你好运(它使用了许多Unix虚拟终端的有趣细节,以便将用户所在的虚拟终端与衍生应用程序所在的虚拟终端挂钩。除了最初的Expect之外,它很少实现。)嗨,Alexey,非常感谢expectit,目前正试着让Interactive工作。本例中的“r”是什么?@JonA“r”是lambda函数参数。尝试使用完整的示例:我正在使用maven dependency,contains not resolved for me。。为什么有这个想法?@Udhaya你想用哪个版本?这适用于find for me net.sf.expectit expectit core 0.8.1