Я хочу написать программу java для получения статуса всех служб, работающих на разных серверах (около 20). Для этого я использую команду SC, я могу сделать это с помощью java-программы. Но теперь я застрял в ситуации, когда я хочу запустить команду SC как другой пользователь с помощью RUNAS, проблема, с которой я столкнулся, заключается в том, что я не могу ввести пароль после того, как команда была выполнена в первый раз , Ниже приведен код, который я использую: -Как ввести пароль при выполнении cmd через java
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);
}
Но я не был в состоянии напечатать состояния всех услуг. Я не уверен, предоставив пароль, нужно ли мне захватить какой-то другой поток или еще?
Любая помощь по этому вопросу?
Благодаря
проблема безопасности может повлиять на вас, вероятно, большинство ответов здесь: если вы предоставить учетные данные через командную строку, они могут быть доступны в виде простого текста при просмотре списков процессов с диспетчером задач или что-то подобное. – mschenk74