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

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);给予前面命令执行时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值