javaSSHlinux主机并执行命令获取控制台结果

我们可以使用jsch的jar包来实现。jsch的官网地址为 http://www.jcraft.com/jsch/

我们下在Jar包之后加入到classpath中。

然后示例代码如下:

 

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.Properties;

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

public class SSHConnector {
	 public static void main(String[] args) throws Exception {  
	        JSch jsch = new JSch(); // 创建JSch对象  
	        String userName = "root";// 用户名  
	        String password = "root";// 密码  
	        String host = "192.168.1.11";// 服务器地址  
	        int port = 22;// 端口号  
	        String cmd = "ls";// 要运行的命令  
	        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();  
	        }  
	    }  
}