![](/img/trans.png)
[英]Connecting to server via SSH using Java - JSch and issuing shell commands
[英]How to get Welcome message after connecting to SSH using JSch
當我使用PuTTY連接到SSH時,收到以下消息,如下所示。
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中得到相同的消息。 請幫助我有關如何獲得此。 我在下面提供了我的代碼詳細信息。
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系統獲取歡迎消息。 請幫助有關如何獲取它。
您所看到的消息只是打印在shell輸出上。
自動讀取和執行命令的效果不佳。
我通常會自動執行命令,因此您正確地計划使用SSH通道“ exec”(JSch中的ChannelExec
)。 但是該頻道不會給您消息。
您將必須使用“ shell”通道(JSch中的ChannelShell
)。 但是該通道旨在實現交互式Shell會話。 不是自動執行命令,也不是解析命令輸出。 特別是在您提出問題的情況下,沒有切實可行的方法來找出“歡迎消息”的結尾。 您必須逐行讀取輸出,直到得到提示( "deb@ubuntu:~$"
)。
或者,如果您的用例允許,則可以使用ChannelShell
獲取消息,然后使用ChannelExec
執行命令。
您最好與服務器管理員聯系,以使用其他API(例如,使用SSH2_MSG_USERAUTH_BANNER
或什至其他方式)來提供所需的信息。 請參閱我對每個用戶的SSH MOTD的回答,以了解服務器如何提供“歡迎消息”的不同方式。 如果服務器使用SSH2_MSG_USERAUTH_BANNER
,則可以使用UserInfo.showMessage
捕獲消息。 另請參閱在以Java連接到主機后如何讀取SSH密鑰-信號對標語(用於生成SSH密碼)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.