Java 코드로 CMD 명령어 실행해 결과값 출력하는 샘플 소스이다.
docker container 모니터링을 위해 REST API를 사용하려고 했더니,
docker 설정을 하면 안되는 상황이다 쩝;;
어쩔수 없이 unix domain socket을 사용해봐야하는데..
구글링해보니 java는 지원안해서 JNI 형태로 사용해야한다고 한다.
그래서 그냥 간단하게 CMD를 호출하는 형태로 갖다가 쓰려고 한다.
# Cmd.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Cmd {
private StringBuffer buffer;
private Process process;
private BufferedReader bufferedReader;
private StringBuffer readBuffer;
public String inputCommand(String cmd) {
buffer = new StringBuffer();
//buffer.append("cmd.exe");
//buffer.append("/c");
buffer.append(cmd);
return buffer.toString();
}
public String execCommand(String cmd) {
try {
process = Runtime.getRuntime().exec(cmd);
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
readBuffer = new StringBuffer();
while((line = bufferedReader.readLine()) != null){
readBuffer.append(line);
readBuffer.append("\n");
}
return readBuffer.toString();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
return null;
}
}
# Docker.java
public class Docker extends Thread {
public void run() {
Cmd cmd = new Cmd();
while (true) {
try {
Thread.sleep(1000);
String command = cmd.inputCommand("curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json");
String result = cmd.execCommand(command);
System.out.println(result);
} catch (Exception e) {
}
}
}
public static void main(String[] args) {
Docker docker = new Docker();
docker.start();
}
}
※ 참고 사이트 ※
'Java > Java' 카테고리의 다른 글
GSON @SerializedName이란? (0) | 2018.05.20 |
---|---|
GSON 라이브러리 사용법 정리 (0) | 2018.05.18 |
이클립스: 리눅스 서버에 ssh 원격 접속 (0) | 2018.05.14 |
CentOS에서 Java JDK 1.8 설치 (0) | 2018.05.14 |
윈도우에서 Maven(메이븐) 설치 (0) | 2018.05.10 |