zoukankan      html  css  js  c++  java
  • 【Hadoop离线基础总结】通过Java代码执行Shell命令

    通过Java代码执行Shell命令


    • 需求
      在实际工作中,总会有些时候需要我们通过java代码通过远程连接去linux服务器上面执行一些shell命令,包括一些集群的状态管理执行任务集群的可视化界面操作等等,所以我们可以通过java代码来执行linux服务器的shell命令
      为了解决上述问题,google公司给提出了对应的解决方案,开源出来了一个jar包叫做 sshxcute,通过这个jar包我们可以通过java代码,非常便捷的操作我们的linux服务器
      项目下载地址:https://code.google.com/archive/p/sshxcute/
      使用说明:https://www.ibm.com/developerworks/cn/opensource/os-sshxcute/

    • 创建maven的java工程并导入jar包
      先将sshxcute导入
      在这里插入图片描述
      在这里插入图片描述
      在pom.xml中插入
      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>3.0</version>
                  <configuration>
                      <source>1.8</source>
                      <target>1.8</target>
                      <encoding>UTF-8</encoding>
                  </configuration>
              </plugin>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-shade-plugin</artifactId>
                  <version>2.2</version>
                  <executions>
                      <execution>
                          <phase>package</phase>
                          <goals>
                              <goal>shade</goal>
                          </goals>
                          <configuration>
                              <filters>
                                  <filter>
                                      <artifact>*:*</artifact>
                                      <excludes>
                                          <exclude>META-INF/*.SF</exclude>
                                          <exclude>META-INF/*.DSA</exclude>
                                          <exclude>META-INF/*/RSA</exclude>
                                      </excludes>
                                  </filter>
                              </filters>
                          </configuration>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </build>
      

    • 开发测试用例
      package cn.itcate.sshxcute;
      
      import com.jcraft.jsch.JSchException;
      import net.neoremind.sshxcute.core.ConnBean;
      import net.neoremind.sshxcute.core.SSHExec;
      import net.neoremind.sshxcute.exception.TaskExecFailException;
      import net.neoremind.sshxcute.task.impl.ExecCommand;
      
      public class XcuteExcute {
          public static void main(String[] args) throws TaskExecFailException, JSchException {
              ConnBean connBean = new ConnBean("192.168.0.30", "root", "zz140412.");
              // 获取SSHExec用于执行Shell命令
              SSHExec sshExec = SSHExec.getInstance(connBean);
              // 连接linux服务器
              sshExec.connect();
      
              /*
              CustomTask是一个抽象类
              获取抽象类的两种方式:
              一种是找子类
              另一种是找抽象类有没有提供方法返回其本身
               */
              ExecCommand execCommand = new ExecCommand("echo 'shut up' >> /export/servers/helloworld.txt");
      
              // 执行linux命令
              sshExec.exec(execCommand);
      
              //断开连接
              sshExec.disconnect();
          }
      }
      
  • 相关阅读:
    我的SICP习题解答-chapter 1
    redis主从复制实验,使用ruby
    python连接redis
    ruby连接redis
    python中的classmethod和staticmethod有什么不同[转载]
    安装配置rails环境
    试用memcached高可用repcached
    试用memcached
    Python一个很好玩的特性decorator
    mybatis随笔四之MapperProxy
  • 原文地址:https://www.cnblogs.com/zzzsw0412/p/12772474.html
Copyright © 2011-2022 走看看