Я хочу написать java-программу для получения статуса всех служб, работающих на разных серверах (около 20). Для этого я использую команду SC, я могу сделать это с помощью программы Java. Но теперь я застрял в ситуации, когда я хочу запустить команду SC от имени другого пользователя с помощью RUNAS, проблема, с которой я столкнулся, заключается в том, что я не могу ввести пароль после того, как команда была выполнена в первый раз. . Ниже приведен код, который я использую: -
String[] command = new String[3];
command[0] = "cmd";
command[1] = "/c";
command[2] = "runas /noprofile /user:domain\\admin \"sc \\\\serverName queryex type= service state= all\"";
Process p = Runtime.getRuntime().exec(command);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(p.getOutputStream())), true);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
new PrintWriter(p.getOutputStream(),true).println("AdminPassword");
System.out.println(line);
line = reader.readLine();
}
BufferedReader stdInput = new BufferedReader(newInputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String Input;
while ((Input = stdInput.readLine()) != null) {
System.out.println(Input);
}
String Error;
while ((Error = stdError.readLine()) != null) {
System.out.println(Error);
}
Но я не смог распечатать состояния всех служб. Я не уверен после предоставления пароля, нужно ли мне захватывать какой-то другой поток или что-то еще ??
Любая помощь в этом?
Спасибо