1 依赖
<!--远程调用shell-->
<dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version> </dependency>
2 shell-java工具类
package com.xinyi.spark.analysis.utils;/**
* @Author: liang.he * @Desc: * @Date: Created in 10:37 2018/5/11 */import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;import java.io.IOException;
import java.io.InputStream;import java.nio.charset.Charset;/**
* @Author: liang.he * @Desc: * @Date: Created in 10:37 2018/5/11 */public class RemoteShellTool { private Connection conn; private String ip; private String charset = Charset.defaultCharset().toString(); private String userName; private String password;public RemoteShellTool(String ip, String userName, String password, String charset) {
this.ip = ip; this.charset = charset; this.userName = userName; this.password = password; }public boolean login() throws IOException {
conn = new Connection(ip); conn.getPort(); conn.connect(); return conn.authenticateWithPassword(userName,password); }public String exec (String cmds){
InputStream in = null; String result = ""; try { if(!this.login()){ System.out.println("登陆失败!"); return "error"; } Session session = conn.openSession(); session.execCommand(cmds);in = session.getStdout();
result = this.processSedout(in,this.charset); session.close(); conn.close(); } catch (IOException e) { e.printStackTrace(); } return result; }public String processSedout(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(); }}
3 测试调用测试
package spark_recordinfo.spark_recordinfo;/**
* @Author: liang.he * @Desc: * @Date: Created in 10:33 2018/5/11 */import com.xinyi.spark.analysis.utils.RemoteShellTool;
/**
* @Author: liang.he * @Desc: * @Date: Created in 10:33 2018/5/11 */public class ShellTest { public static void main(String[] args) {RemoteShellTool shellTool = new RemoteShellTool("ip","root","pswd","utf-8");
String result1 = shellTool.exec("/opt/test/test.sh "); System.out.println(result1); }}