[英]What is the reason to get exit status value -1 in JSch
我正在嘗試使用 JSch (SSH) API 在遠程 Linux 機器上從 Java 運行命令。 exitStatus
值為-1
即
int exitStatus = channelExec.getExitStatus()
獲得負值的可能原因是什么?
請注意getExitStatus()上的文檔 。
退出狀態將為-1,直到通道關閉。
'-1'表示尚未從遠程sshd接收退出狀態代碼。
這是我的代碼。 它工作正常。
public static Result sendCommand(String ip, Integer port, String userName, String password, String cmd) {
Session session = null;
ChannelExec channel = null;
Result result = null;
try {
JSch jsch = new JSch();
JSch.setConfig("StrictHostKeyChecking", "no");
session = jsch.getSession(userName, ip, port);
session.setPassword(password);
session.connect();
channel = (ChannelExec)session.openChannel("exec");
InputStream in = channel.getInputStream();
channel.setErrStream(System.err);
channel.setCommand(cmd);
channel.connect();
StringBuilder message = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = reader.readLine()) != null)
{
message.append(line).append("\n");
}
channel.disconnect();
while (!channel.isClosed()) {
}
result = new Result(channel.getExitStatus(),message.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null) {
try {
session.disconnect();
} catch (Exception e) {
}
}
}
return result;
}
channelName.getExitStatus()
它將檢索與您的頻道對應的遠程命令的退出狀態。 如果命令尚未終止(或此通道類型沒有命令),它將返回狀態為-1 。
有關更多信息,請參閱 jsch 文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.