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中通过sudo命令执行shell脚本以启动服务