如何使用java实现expect“interact”命令

时间:2013-02-28 19:05:54

标签: java unix tcl expect expectj

我想使用java实现expect“interact”命令。在期望中,可以打开ssh会话,进行身份验证,然后使用“interact”命令将控件返回给用户。这可能与Java?我尝试过expectJ,expect4J和expectForJava但是文档很少,几乎没有如何做到这一点的例子。 TIA。

更新:对于“互动”命令参考,请查看:http://wiki.tcl.tk/3914

  

“Interact是一个Expect命令,可以控制电流   处理到用户,以便将击键发送到当前   进程,以及当前进程的stdout和stderr   返回。“

2 个答案:

答案 0 :(得分:1)

这些库可能更适合您的需求:

<强> SSHJ

https://github.com/shikhar/sshj

<强> JSCH

http://www.jcraft.com/jsch/

答案 1 :(得分:1)

如果有人感兴趣,我已经为ExpectIt添加了基本的交互式循环支持,这是我自己的开源Expect for Java实现(对不起自我推销),自0.8版以来。

这是与Java 8中的系统输入流交互的example

        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();