1. ShRunner class 만들기
package ...;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class ShRunner {
public Map<Integer, String> execCommand(String... str) {
Map<Integer, String> map = new HashMap<>();
ProcessBuilder pb = new ProcessBuilder(str);
pb.redirectErrorStream(true);
Process process = null;
try {
process = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader reader = null;
if (process != null) {
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
}
String line;
StringBuilder stringBuilder = new StringBuilder();
try {
if (reader != null) {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (process != null) {
process.waitFor();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
if (process != null) {
map.put(0, String.valueOf(process.exitValue()));
}
try {
map.put(1, stringBuilder.toString());
} catch (StringIndexOutOfBoundsException e) {
if (stringBuilder.toString().length() == 0) {
return map;
}
}
return map;
}
}
2. ShRunner 호출해서 사용하기
import java.util.Map;
import replaceTest.ShRunner;
public class IOService {
static ShRunner shRunner = new ShRunner();
/**
* shell script 실행시키기
* @param shFile
*/
public void runShellScript(String shFile) {
String cmds = "sh " + shFile;
String[] callCmd = {"/bin/bash", "-c", cmds};
Map<Integer,String> map = shRunner.execCommand(callCmd);
System.out.println(map);
}
}
References
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java) 정규식과 StringBuffer를 이용하여 문자열 특정 위치만 치환하기 (0) | 2022.03.24 |
---|---|
Java) 랜덤 아이디 만들기 - n자리수 16진수 문자열 만들기 (0) | 2022.02.16 |
Java) JSON body와 함께 HTTP POST 요청 보내기 (0) | 2022.02.07 |
Java) URL로 파일 다운받아 로컬에 저장하기 (0) | 2022.01.19 |
JAVA/VSCode) compiler.err.doesnt.exist 빨간줄 오류 해결 (0) | 2021.11.15 |