/**
* 執行shell語句
*
* @param shell
* @return
*/
public static String execShell(String shell, boolean log) throws Exception {
InputStream inputStream = null;
BufferedReader br = null;
InputStreamReader inputStreamReader = null;
if (log) {
logger.info("shell is : {}", shell);//記錄shell操作
}
try {
Process ps = Runtime.getRuntime().exec(new String[]{"sh","-c",shell});//執行
inputStream = ps.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
br = new BufferedReader(inputStreamReader);
return readStream(br, log);
} catch (Exception e) {
throw new Exception(e);
} finally {
close(inputStream);
close(inputStreamReader);
close(br);
}
}
/**
* 解析流
*
* @param bufferedReader 流對象
* @param log 是否打印流內容
* @return
* @throws IOException
*/
private static String readStream(BufferedReader bufferedReader, boolean log) throws IOException {
StringBuffer sb = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line).append("\n");
if (log) {
logger.info(line);
}
}
return sb.toString().trim();
}