gpt4 book ai didi

java - Jsch 删除路由器的登录横幅

转载 作者:行者123 更新时间:2023-12-01 04:39:36 26 4
gpt4 key购买 nike

我正在使用 Jsch lib 访问网络中的路由器,但在某些路由器中存在登录横幅。所以我需要读取输出,识别横幅,将其删除并仅获取命令的输出。我正在执行模式下使用 channel 。我认为的一个解决方案是获取提示符的最后一个字符,例如“>”或“#”,但在执行模式下我只获取命令的输出。

最佳答案

抱歉,我迟到了好几年,但我刚刚自己解决了这个问题。

如果您注意到, session 有一个方法 setUserInfo(myUserInfo);

UserInfo 是一个抽象类。 shell session 使用“showMessage(Str msg)”方法来显示横幅。

由于您使用的是 Exec session ,所以 exec session 仍然调用 showMessage(),所以我所做的是扩展 UserInfo 并添加我自己的 getMessage(),使用 showMessage(Str msg) 设置我的“String messageVar”。

MyUserInfo 是我扩展的 JSCH 示例之一中的类。这是我的用户信息:

    public static abstract class MyUserInfo
implements UserInfo, UIKeyboardInteractive {


public String getPassword() {
return null;
}

public boolean promptYesNo(String str) {
return false;
}

public String getPassphrase() {
return null;
}

public boolean promptPassphrase(String message) {
return false;
}

@Override
public boolean promptPassword(String message) {
return false;
}

@Override
public void showMessage(String message) {

}


public abstract String getMessage();

public String[] promptKeyboardInteractive(String destination,
String name,
String instruction,
String[] prompt,
boolean[] echo) {
return null;
}
}

这是我的扩展。

    public class UI extends MyUserInfo{
String message;

@Override
public void showMessage(String message) {
this.message=message;
super.showMessage(message); //To change body of generated methods, choose Tools | Templates.
}

@Override
public String getMessage() {
return this.message;
}
}

以下是如何使用它:

session.setUserInfo(new UI());
session.connect();

((UI)session.getUserInfo()).getMessage();

关于java - Jsch 删除路由器的登录横幅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com