Как отправить пользовательский ввод на терминал из Java-программы (т.е. программно)?
Я выполняю команду из Java-программы, как
Process myProcess = Runtime.getRuntime().exec("sudo cat /etc/sudoers"); //It asks for password so I send password through outputstream from my program.
InputStream inputStream = myProcess.getInputStream();
OutputStream outputStream = myProcess.getOutputStream();
outputStream.write("mypassword".getBytes()); // write password in stream
outputStream.flush();
outputStream.close();
Но проблема в том, что он снова запрашивает у меня пароль, так как я уже отправляю пароль через outputtream из моей программы. Для решения этой проблемы я пытался много раз, но на самом деле не сделал.
Используя сценарий оболочки, я могу предоставить пароль для терминала, и моя программа работает нормально, но это не самый гибкий способ.
Можете ли вы предложить мне какой-либо способ предоставления пароля через мою Java-программу? (вместо программирования оболочки)
1 ответ
Вы можете сделать это с помощью -S
вариант sudo:
String[] cmd = {"/bash/bin","-c","echo yourpassword| sudo -S your command"};
Runtime.getRuntime.exec(cmd);
Но я не уверен, что это рекомендуется.
Я не автор, я нашел это там: http://www.coderanch.com/t/517209/java/java/provide-password-prompt-through-Java