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

  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/yzlsthl/p/9099306.html
Copyright © 2011-2022 走看看