在Java中执行远程shell命令

时间:2014-03-24 06:34:31

标签: java shell unix jsch

我需要使用java在unix框上执行一些远程命令。为此,我使用了jsch,但问题是我需要收集最后一个命令的输出。

我写了下面的代码:

public static String run(String hostname, String hostPort, String username, String password, String[] commands) throws JSchException, IOException
    {
        JSch jsch = new JSch();
        Session session = jsch.getSession(username, hostname, 22);
        session.setPassword(password);
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        // System.out.println("Connected");

        ChannelExec channel = (ChannelExec) session.openChannel("exec");

        BufferedReader in = new BufferedReader(new InputStreamReader(channel.getInputStream()));
        StringBuffer sb = new StringBuffer();
        for (String s : commands)
        {
            sb.append(s + ';');
        }
        String command = sb.toString();
        channel.setCommand(command);
        channel.connect();

        String msg = null;
        //String output = "";
        StringBuffer output = new StringBuffer();
        while ((msg = in.readLine()) != null)
        {
            //output = output + msg;
            output.append(msg);
        }

        channel.disconnect();
        session.disconnect();
        // System.out.println("DONE");
        return output.toString();
    }

在上面的代码中,我收集了所有的命令结果,但我只需要收集最后一个命令的结果。

请提供您的意见。

0 个答案:

没有答案