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 \"#\""));
}
}