package com.app.mvc.util;
import com.app.mvc.beans.JsonMapper;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.List;
/**
* Created by jimin on 16/3/20.
*/
@Slf4j
public class ShellUtil {
/**
* 运行shell脚本
*
* @param shell 需要运行的shell脚本
*/
public static List<String> execShell(String shell) {
List<String> strList = Lists.newArrayList();
try {
Runtime rt = Runtime.getRuntime();
Process process = rt.exec(shell);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
process.waitFor();
while ((line = input.readLine()) != null) {
strList.add(line);
}
} catch (Exception e) {
log.error("exec shell error, shell: " + shell, e);
}
return strList;
}
/**
* 运行shell
*
* @param shStr 需要执行的shell
*/
public static List runShell(String shStr) throws Exception {
List<String> strList = Lists.newArrayList();
Process process;
process = Runtime.getRuntime().exec(new String[] { "/bin/sh", "-c", shStr }, null, null);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
process.waitFor();
while ((line = input.readLine()) != null) {
strList.add(line);
}
return strList;
}
public static void main(String[] args) {
// 在当前项目首层执行, pom.xml相同路径
String shell = "ls -al";
List<String> list = execShell(shell);
log.info(JsonMapper.obj2String(list));
}
}