首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用JSch连接到SSH后获得欢迎消息

如何在使用JSch连接到SSH后获得欢迎消息
EN

Stack Overflow用户
提问于 2019-01-05 08:50:27
回答 1查看 989关注 0票数 1

当我使用PuTTY连接到SSH时,我得到如下消息:

代码语言:javascript
复制
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-98-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
deb@ubuntu:~$

类似地,当我使用JSch库进行连接时,我也应该在Java中获得相同的消息。请你帮我解决这个问题。我在下面提供我的代码细节。

代码语言:javascript
复制
public String connect() {
    String errorMessage = null;
    try {
      sesConnection = jschSSHChannel.getSession(userName, ipOrHostName, PORT);
      sesConnection.setPassword(password);
      sesConnection.setConfig("StrictHostKeyChecking", "no");
      sesConnection.connect(TIMEOUT);

      //After connecting, I should get the welcome message

    } catch (JSchException jschX) {
      errorMessage = jschX.getMessage();
    }
    return errorMessage;
  }

在执行JSch中的命令之前,我想从unix系统获得欢迎消息。关于如何得到它请提供帮助。

EN

回答 1

Stack Overflow用户

发布于 2019-01-05 17:06:43

您所看到的消息只是打印在shell输出上。

这与自动读取和执行命令不太一致。

我一般要自动执行命令,您可以正确地计划使用SSH通道"exec“(ChannelExec in JSch)。但那个频道不会给你信息。

您必须使用"shell“通道(ChannelShell in JSch)。但是,该通道的目的是实现交互式shell会话。不是自动执行命令,也不是解析命令输出。特别是在你的问题中,找出“欢迎信息”的结尾是不可能的。您必须逐行读取输出,直到得到提示符("deb@ubuntu:~$")。

或者,如果用例允许,可以使用ChannelShell获取消息,然后使用ChannelExec执行命令。

您最好与服务器管理员交谈,使用不同的API (比如使用SSH2_MSG_USERAUTH_BANNER,甚至其他方式)来提供所需的信息。请参阅我对SSH MOTD per user的回答,以了解服务器如何提供“欢迎消息”。如果服务器使用SSH2_MSG_USERAUTH_BANNER,则可以使用UserInfo.showMessage捕获消息。另见How to read the SSH key-sig pair banner (for generating SSH password) after connecting to host in Java?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54050436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档