Window下Java远程调用Shell脚本的实现(学习整理)

来源:互联网 发布:知乎怎么补充回答 编辑:程序博客网 时间:2024/06/13 01:23
package centosLink;import java.io.IOException;import java.io.InputStream;import ch.ethz.ssh2.Connection;import ch.ethz.ssh2.Session;public class ShellMain {  private Connection conn;  private String ipAddr;  private String charset ;  private String userName;  private String password;    public ShellMain(String ipAddr, String userName, String password, String charset) {     this.ipAddr = ipAddr;     this.userName = userName;     this.password = password;     if(charset != null) {      this.charset = charset;     }  }    public boolean login() throws IOException {  conn = new Connection(ipAddr);     conn.connect();      return conn.authenticateWithPassword(userName, password);}    public String exec(String cmds) {     InputStream in = null;     String result = "";     try {      if (this.login()) {       Session session = conn.openSession();       session.execCommand(cmds);              in = session.getStdout();       result = this.processStdout(in, this.charset);       conn.close();      }     } catch (IOException e1) {      e1.printStackTrace();     }     return result;}    public String processStdout(InputStream in, String charset) {     byte[] buf = new byte[1024];     StringBuffer sb = new StringBuffer();     try {      while (in.read(buf) != -1) {       sb.append(new String(buf, charset));      }     } catch (IOException e) {      e.printStackTrace();     }     return sb.toString();}}


Test:

package centosLink;import java.io.FileNotFoundException;public class ShellExec {public static void main(String[] args) throws FileNotFoundException {ShellMain tempShellMain = new ShellMain("IP","userName","passWord","utf-8");    String string = tempShellMain.exec("ls -l");    System.out.println(string);    }}

需要用到ganymed-ssh2-build210.jar包。

在执行多条命令时,可能命令执行需要时间,可以再命令加入休眠Thread.sleep(1000);给予前面命令执行时间。

0 0
原创粉丝点击