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