【问题标题】:Interactively entering enable mode with Java and expectit使用 Java 和 expectit 交互地进入启用模式
【发布时间】:2016-04-02 12:54:59
【问题描述】:

我正在对一些网络设备进行一些维护,并且一直在使用 Expectit 浏览菜单。但是,我只有在设备提供我期望的提示时才成功。例如,当我登录时,有些设备已经处于启用模式,但有些不是。

我想做相当于:

Expect expect = new ExpectBuilder()
        .withOutput(channel.getOutputStream())
        .withInputs(channel.getInputStream(), channel.getExtInputStream())
        .withEchoOutput(wholeBuffer)
        .withEchoInput(wholeBuffer)
        .withExceptionOnFailure()
        .build();

channel.connect();
if (expect.expect(contains(">")) {
    expect.sendLine("enable");
    expect.expect("assword:");
    expect.sendLine(password);
}
expect.expect(contains("#"));

但我知道这是不对的,而且它不起作用。对实现对某个提示的反应和对其他提示的另一种反应的一些帮助将不胜感激。谢谢!

【问题讨论】:

    标签: java expect expectit


    【解决方案1】:

    你可以试试ExpectIt#interact,不过好像在0.8.0版本坏了,所以试试最新的0.8.1版本吧。

    没有interact,您可以使用anyOf 匹配器并根据个别结果的条件进行逻辑。这基本上就是interact 的工作原理。这是一个例子:

    MultiResult multiResult = expect.expect(anyOf(contains(">"), contains("#")));
    if (multiResult.getResults().get(0).isSuccessful()) {
        expect.sendLine("enable");
        expect.expect(contains("assword:"));
        expect.sendLine(password);
    } else if (multiResult.getResults().get(1).isSuccessful()) {
       expect.expect(contains("#"));
    }
    

    希望对你有帮助。

    【讨论】:

    • 感谢您的帮助。 anyOf 完全符合我的需要。
    猜你喜欢
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2020-04-16
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多