zoukankan      html  css  js  c++  java
  • java 调用启动远程shell脚本,启动spark

    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);
    }
    }

  • 相关阅读:
    js查找字符串中重复的子字符串
    未知盒子宽高使盒子垂直水平居中
    标准盒模型和怪异盒模型的差异
    Vue练习(跑马灯效果)
    node后端中MVC与前端中的MVVM之间的区别
    ES6中对Promise解析
    ES6中对箭头函数的使用
    ES6对map解析
    ES6中对Set解析
    ES6解构赋值全了解
  • 原文地址:https://www.cnblogs.com/yzlsthl/p/9099306.html
Copyright © 2011-2022 走看看