jsch通过SSH2执行linux命令

Posted 柚子苹果果

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsch通过SSH2执行linux命令相关的知识,希望对你有一定的参考价值。

public class SSHUtils {

    private Channel channel;
    private Session session = null;
    private int timeout = 60000;

    public SSHUtils(final String ipAddress, final String username, final String password) throws Exception {

        JSch jsch = new JSch();
        this.session = jsch.getSession(username, ipAddress, 22);
        this.session.setPassword(password);
        this.session.setConfig("StrictHostKeyChecking", "no");
        this.session.setTimeout(this.timeout);
        this.session.connect();
        this.channel = this.session.openChannel("shell");
        this.channel.connect(1000);
    }

    public String runShell(String cmd, String charset) throws Exception {
        String temp = null;

        InputStream instream = null;
        OutputStream outstream = null;
        try {
            instream = this.channel.getInputStream();
            outstream = this.channel.getOutputStream();
            outstream.write(cmd.getBytes());
            outstream.flush();
            Thread.sleep(2000);
            if (instream.available() > 0) {
                byte[] data = new byte[instream.available()];
                int nLen = instream.read(data);

                if (nLen < 0) {
                    throw new Exception("network error.");
                }

                temp = new String(data, 0, nLen, "UTF-8");
            }
        }  finally {
            outstream.close();
            instream.close();
        }
        return temp;
    }

    public void close() {
        this.channel.disconnect();
        this.session.disconnect();
    }

    public static void main(final String[] args) throws Exception {
        SSHUtils sshUtil = new SSHUtils("10.5.31.157", "root", "codyy#123456");
        String res = sshUtil.runShell("/usr/local/baseframe/server.sh start ConfigServer-1.0.0.jar
", "utf-8");
        System.out.println(res);
        sshUtil.close();
    }
}

 

以上是关于jsch通过SSH2执行linux命令的主要内容,如果未能解决你的问题,请参考以下文章

Java中通过jsch来连接远程服务器执行linux命令

使用java中的jsch在linux中通过sudo命令执行shell脚本以启动服务

ch.ethz.ssh2.Session和com.jcraft.jsch.Session

通过 JSch shell 执行多个命令

使用 JSch 为通过 SSH 执行的命令提供输入/子命令

JSCH执行linux命令