我正在使用psexec
和sc query state= all
來打印出遠程服務器上的所有服務。我想分析這個輸出,並試圖使用BufferedReader
來做到這一點。psexec在與Java一起運行時失速
Runtime rt = Runtime.getRuntime();
String line = null;
Process pr = null;
pr = rt.exec("test.bat");
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
while((line = input.readLine()) != null) {
System.out.println(line);
}
test.bat的
psexec \\server -u username -p password sc query state= all
當我運行在命令行窗口psexec \\server -u username -p password sc query state= all
,我得到這個;
SERVICE_NAME: Tomcat6
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
SERVICE_NAME: ActiveMQ
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
etc.
但在Java中,它打印第一個服務然後停止,所以打印出來是這樣的;
SERVICE_NAME: Tomcat6
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
是的,我產生了相同的結果。 – bunduru