java执行linux命令的工具类

package com.starfast.common.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

/**
 * @author DUCHONG
 * @since 2018-05-04 10:57
 **/
public class LinuxCmdUtils {

    static Logger logger= LoggerFactory.getLogger(LinuxCmdUtils.class);

    public  static boolean executeLinuxCmd(String cmd) {

        boolean result=false;

        System.out.println("got cmd : " + cmd);
        Runtime run = Runtime.getRuntime();
        //InputStream in=null;
        try {
            Process process = run.exec(cmd);
            //执行结果 0 表示正常退出
            int exeResult=process.waitFor();
            if(exeResult==0){
                System.out.println("执行成功");
                result=true;
            }

        }
        catch (Exception e) {
            logger.error("LinuxCmdUtils.executeLinuxCmd error",e);
        }
        return result;
    }

    /**
     * 获取linux命令执行的结果,cat 之类
     * @param cmd
     * @return
     */
    public static String getCmdResult(String cmd) {

        String result = "";
        try {

            Process process = Runtime.getRuntime().exec(cmd);
            InputStreamReader ir = new InputStreamReader(process.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            String line;
            while ((line = input.readLine()) != null){
                result=line;
            }

        } catch (java.io.IOException e) {

            System.err.println("IOException " + e.getMessage());

        }
        return result;
    }

    /**
     * grep 类的shell命令
     * @param cmdStr
     * @return
     */
    public static String getGrepCmdReturn(String cmdStr){

        String[] cmd = new String[3];

        cmd[0]="/bin/sh";
        cmd[1]="-c";
        cmd[2]=cmdStr;

        //得到Java进程的相关Runtime运行对象
        Runtime runtime = Runtime.getRuntime();
        StringBuffer stringBuffer=null;
        try
        {
            
            Process process = runtime.exec(cmd);

            BufferedReader bufferReader = new BufferedReader(
                    new InputStreamReader(process.getInputStream()));

             stringBuffer= new StringBuffer();

            String temp = null;

            while ((temp = bufferReader.readLine()) != null)
            {
                stringBuffer.append(temp);
            }
            

        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return  stringBuffer.toString();
    }

    public static void main(String[] args) {

        System.out.println(LinuxCmdUtils.getGrepCmdReturn("dmidecode -s system-serial-number|grep -v "#""));
    }
}

  

原文地址:https://www.cnblogs.com/geekdc/p/9234948.html