使用JSch远程执行shell命令

package com.nihaorz.jsch;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

import java.io.IOException;
import java.io.InputStream;

/**
 * Created by Nihaorz on 2017/5/9.
 */
public class Test {
    public static void main(String[] args) throws JSchException, IOException {

        String command = "service tomcat6 status";

        JSch jsch = new JSch();
        Session session = jsch.getSession("root", "omgr.gfstack.geo", 22);
        session.setPassword("123456");
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect(60 * 1000);
        Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand(command);

        channel.setInputStream(null);

        ((ChannelExec) channel).setErrStream(System.err);

        InputStream in = channel.getInputStream();

        channel.connect();

        byte[] tmp = new byte[1024];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(tmp, 0, 1024);
                if (i < 0) break;
                System.out.print(new String(tmp, 0, i));
            }
            if (channel.isClosed()) {
                if (in.available() > 0) continue;
                System.out.println("exit-status: " + channel.getExitStatus());
                break;
            }
            try {
                Thread.sleep(1000);
            } catch (Exception ee) {
            }
        }
        channel.disconnect();
        session.disconnect();

    }
}

 

参考:http://blog.chinaunix.net/uid-608135-id-5097850.html

 

posted @ 2017-05-09 11:17  Nihaorz  阅读(9876)  评论(0编辑  收藏  举报