http://chenxu-8456.iteye.com/blog/1168265

在java中可以使用jsch连接远程Linux服务器,并在服务器上执行传送命令,同时该jar包也可以使用ftp在服务器上上传下载文件,本节讲述如何通过该jar包传送linux命令并且执行: 

Java代码   收藏代码
  1. package com.aliyun.utility.jsch;  
  2.   
  3. import java.io.InputStream;  
  4. import java.util.Properties;  
  5. import com.jcraft.jsch.ChannelExec;  
  6. import com.jcraft.jsch.JSch;  
  7. import com.jcraft.jsch.Session;  
  8.   
  9. public class JSCHUtil {  
  10.     private static JSCHUtil instance;  
  11.   
  12.     public static JSCHUtil getInstance() {  
  13.         if (instance == null) {  
  14.             instance = new JSCHUtil();  
  15.         }  
  16.         return instance;  
  17.     }  
  18.   
  19.     private JSCHUtil() {  
  20.   
  21.     }  
  22.   
  23.     private Session getSession(String host, int port, String ueseName)  
  24.             throws Exception {  
  25.         JSch jsch = new JSch();  
  26.         Session session = jsch.getSession(ueseName, host, port);  
  27.         return session;  
  28.     }  
  29.   
  30.     public Session connect(String host, int port, String ueseName,  
  31.             String password) throws Exception {  
  32.         Session session = getSession(host, port, ueseName);  
  33.         session.setPassword(password);  
  34.         Properties config = new Properties();  
  35.         config.setProperty("StrictHostKeyChecking""no");  
  36.         session.setConfig(config);  
  37.         session.connect();  
  38.         return session;  
  39.     }  
  40.   
  41.     public String execCmd(Session session, String command) throws Exception {  
  42.         if (session == null) {  
  43.             throw new RuntimeException("Session is null!");  
  44.         }  
  45.         ChannelExec exec = (ChannelExec) session.openChannel("exec");  
  46.         InputStream in = exec.getInputStream();  
  47.         byte[] b = new byte[1024];  
  48.   
  49.         exec.setCommand(command);  
  50.         exec.connect();  
  51.         StringBuffer buffer = new StringBuffer();  
  52.         while (in.read(b) > 0) {  
  53.             buffer.append(new String(b));  
  54.         }  
  55.         exec.disconnect();  
  56.   
  57.         return buffer.toString();  
  58.     }  
  59.   
  60.     public void clear(Session session) {  
  61.         if (session != null && session.isConnected()) {  
  62.             session.disconnect();  
  63.             session = null;  
  64.         }  
  65.     }  
  66.   
  67.     public static void main(String[] args) throws Exception {  
  68.         Session session = JSCHUtil.getInstance().connect("10.9.9.135"22,  
  69.                 "yy""yy");  
  70.         String cmd = "cd /" + ";" + "ls -al |grep home";  
  71.         String result = JSCHUtil.getInstance().execCmd(session, cmd);// 多条命令之间以;分隔  
  72.         System.out.println(result);  
  73.         System.exit(0);  
  74.     }  
  75. }  
Logo

更多推荐