package com.taobao.zeus.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RunShell {
private static Logger log = LoggerFactory.getLogger(RunShell.class);
private List<String> cmd;
private ProcessBuilder builder;
private Process process;
private int exitCode = -999;
public RunShell(String command) {
cmd = new ArrayList<String>();
cmd.add("sh");
cmd.add("-c");
cmd.add(command);
}
public int run() {
builder = new ProcessBuilder(cmd);
try {
process = builder.start();
exitCode = process.waitFor();
} catch (IOException e) {
log.error("error", e);
} catch (InterruptedException e) {
log.error("error", e);
}
return exitCode;
}
public String getResult() throws IOException {
if (exitCode == 0) {
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
StringBuilder result = new StringBuilder();
while ((line = input.readLine()) != null) {
result.append(line);
}
return result.toString().trim();
} else {
BufferedReader err_input = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
StringBuilder err_result = new StringBuilder();
while ((line = err_input.readLine()) != null) {
err_result.append(line);
}
log.error(err_result.toString());
}
return null;
}
}