package com.huaweisymantec.core.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 命令行命令执行工具类
*
* @author s00108907
*
*/
public final class CommandUtils {
private static final Logger LOG = LoggerFactory.getLogger(CommandUtils.class);
/**
* 调用系统的DOS命令方法执行需要的命令
*
* @param command 要执行的命令
* @return 执行结果
* @throws IOException
*/
public static String exec(String command) throws IOException {
return exec(null, command);
}
/**
* 调用系统的DOS命令方法执行需要的命令
*
* @param directory 此进程的工作目录
* @param command 要执行的命令
* @return 执行结果
* @throws IOException
*/
public static String exec(String directory, String command) throws IOException {
InputStream in = null;
Reader reader = null;
BufferedReader br = null;
try {
ProcessBuilder pb;
if (System.getProperty("os.name").indexOf("Windows") == -1) {
pb = new ProcessBuilder("/bin/sh", "-c", command);
} else {
pb = new ProcessBuilder("cmd", "/c", command);
}
if (StringUtils.isNotBlank(directory)) {
pb.directory(new File(directory));
}
// merge the error output with the standard output
pb.redirectErrorStream(true);
LOG.debug("Now exceuting:{}", command);
Process p = pb.start();
in = p.getInputStream();
reader = new InputStreamReader(in, "gb2312");
br = new BufferedReader(reader);
StringBuffer lines = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
lines.append(line).append("\r\n");
}
LOG.debug("Exceuting result:{}", lines.toString());
return lines.toString();
} finally {
if (reader != null) {
reader.close();
}
if (br != null) {
br.close();
}
if (in != null) {
in.close();
}
}
}
}