使用 Java 和 expectit 交互进入启用模式

Interactively entering enable mode with Java and expectit

我正在对一些网络设备进行一些维护,我一直在使用 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("#"));

但我知道这是不对的,也行不通。在对某个提示做出反应和对其他提示做出另一种反应方面提供一些帮助,我们将不胜感激。谢谢!

你可以试试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("#"));
}

希望对您有所帮助。