
废话不多说,直接上代码
package com.mlchain.strategy.utils;import com.jcraft.jsch.ChannelExec;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;import java.util.Properties;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.nio.charset.Charset;/****@auther keven*@date 2018/12/7 14:55*@desc 远程执行linux服务器*@since V1.0*/public class RemoteCommandUtil { public static void main(String[] args) throws Exception { JSch jsch = new JSch(); // 创立JSch对象 String userName = "####";// 客户名 String password = "####";// 密码 String host = "####";// 服务器地址 int port = 22;// 端口号 //String cmd = "cat /data/hello.txt";// 要运行的命令 String cmd = "netstat -ntlp";// 要运行的命令 Session session = jsch.getSession(userName, host, port); // 根据客户名,主机ip,端口获取一个Session对象 session.setPassword(password); // 设置密码 Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); // 为Session对象设置properties int timeout = 60000000; session.setTimeout(timeout); // 设置timeout时间 session.connect(); // 通过Session建立链接 ChannelExec channelExec = (ChannelExec) session.openChannel("exec"); channelExec.setCommand(cmd); channelExec.setInputStream(null); channelExec.setErrStream(System.err); channelExec.connect(); InputStream in = channelExec.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName("UTF-8"))); String buf = null; StringBuffer sb = new StringBuffer(); while ((buf = reader.readLine()) != null) { sb.append(buf); System.out.println(buf);// 打印控制台输出 } reader.close(); channelExec.disconnect(); if (null != session) { session.disconnect(); } }}