Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Java Jsch移除路由器';s登录横幅_Java_Ssh_Jsch - Fatal编程技术网

Java Jsch移除路由器';s登录横幅

Java Jsch移除路由器';s登录横幅,java,ssh,jsch,Java,Ssh,Jsch,我使用Jsch lib访问网络中的路由器,但在某些路由器中有登录横幅。因此,我需要读取输出,识别横幅,删除它,然后只获取命令的输出。我正在exec模式下使用通道。我认为一种解决方案是获取提示符的最后一个字符,如“>”或“#”,但在exec模式下,我只获取命令的输出。很抱歉,我这么做晚了很多年,但我只是自己解决了这个问题 如果您注意到,会话有一个方法setUserInfo(myUserInfo) UserInfo是一个抽象类。shell会话使用“showMessage(Str msg)”方法显示横

我使用Jsch lib访问网络中的路由器,但在某些路由器中有登录横幅。因此,我需要读取输出,识别横幅,删除它,然后只获取命令的输出。我正在exec模式下使用通道。我认为一种解决方案是获取提示符的最后一个字符,如“>”或“#”,但在exec模式下,我只获取命令的输出。

很抱歉,我这么做晚了很多年,但我只是自己解决了这个问题

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

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

由于您使用的是Exec会话,Exec会话仍然调用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()

我想到了一个解决这个问题的方法:发送一个空白命令,这样输出的就是横幅,获取横幅的长度并将其放入一个变量中。这项工作很好,但如果有人得到另一个解决方案,请展示它。谢谢。我想这是该走的路。如果“登录横幅”在执行命令之前由远程shell发送,则客户端无法安全地对其进行分隔。你能给出一个详细的答案吗?