У меня есть Java-программа, которая выполняет команды оболочки. Все работает нормально, так как я могу видеть, работают ли команды или есть ошибка ... за исключением случаев, когда команды предлагают пользователю ввести дополнительную информацию.
Например, когда я запускаю команду ssh-keygen -t rsa -b 4096 -f my_key_name
, программа будет вращаться вечно и не вернется к пользователю, так как она ждет от меня ввода пароля. Теперь я знаю, что могу ввести -P ""
, чтобы пропустить добавление пароля, но моя проблема в других командах, которые запрашивают информацию.
Я просто хочу знать, как я мог бы вернуть текст приглашения пользователю (так как мне не нужно, чтобы пользователь мог ввести его ответ на приглашение).
RunCommandDto runCommandDto = new RunCommandDto();
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec('ssh-keygen -t rsa -b 4096 -f my_key_name');
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
String output = "";
while ((String sInOut = stdInput.readLine()) != null) {
output += sInOut + "\n";
}
while ((String sErr = stdError.readLine()) != null) {
output += sErr + "\n";
}