執行shell腳本,並返回篩選結果的多功能Java工具類LinuxCmdUtils

執行shell腳本,並返回篩選結果的多功能Java工具類

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.PrintStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LinuxCmdUtils
{
  private static final Logger log = LoggerFactory.getLogger(LinuxCmdUtils.class);

  public static boolean executeLinuxCmd(String cmd) {
    boolean result = false;

    System.out.println("got cmd : " + cmd);
    Runtime run = Runtime.getRuntime();
    try
    {
      Process process = run.exec(cmd);

      int exeResult = process.waitFor();
      if (exeResult == 0) {
        if (log.isInfoEnabled()) log.info("執行成功");
        result = true;
      }
    }
    catch (Exception e)
    {
      if (log.isErrorEnabled()) {
        log.error("LinuxCmdUtils.executeLinuxCmd error {}", e.getMessage(), e);
      }
    }
    return result;
  }

  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 (IOException e)
    {
      if (log.isErrorEnabled()) {
        log.error(e.getMessage(), e);
      }
    }
    return result;
  }

  public static String getGrepCmdReturn(String cmdStr)
  {
    String[] cmd = new String[3];

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

    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();
      if (log.isErrorEnabled()) {
        log.error(e.getMessage(), e);
      }
    }

    return stringBuffer.toString();
  }

  public static void main(String[] args)
  {
    System.out.println(getGrepCmdReturn("dmidecode -s system-serial-number|grep -v \"#\""));
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章