簡體   English   中英

在 JSch 中獲得退出狀態值 -1 的原因是什么

[英]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接收退出狀態代碼。

API描述

這是我的代碼。 它工作正常。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM