9

我想使用 java 实现期望的“交互”命令。在预期中,可以打开一个 ssh 会话,进行身份验证,然后使用“interact”命令将控制权交还给用户。用java可以吗?我尝试过使用 expectJ、expect4J 和 expectForJava,但文档很少,几乎没有关于如何执行此操作的示例。TIA。

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

“Interact 是一个 Expect 命令,它将当前进程的控制权交给用户,以便将击键发送到当前进程,并返回当前进程的 stdout 和 stderr。”

4

2 回答 2

2

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

下面是一个在 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();
于 2015-08-21T12:22:31.037 回答
1

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

SSHJ

https://github.com/shikhar/sshj

JSCH

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

于 2013-08-20T13:39:37.990 回答