Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实施expect“;“互动”;使用java的命令_Java_Unix_Tcl_Expect_Expectj - Fatal编程技术网

如何实施expect“;“互动”;使用java的命令

如何实施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

我想用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