Estou executando o comando do programa java como
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();
Mas o problema é que, novamente, peça-me a senha já que eu já envio a senha através do stream de saída do meu programa. Para resolver isso eu tentei tantas vezes, mas não na verdade.
Usando o shell script, eu posso fornecer senha para o terminal e meu programa funciona bem, mas não é a maneira mais flexível.
Você pode me sugerir alguma maneira de fornecer senha através do meu programa java? (em vez de programação shell)
Você pode fazer isso usando a opção -S
do sudo:
String[] cmd = {"/bash/bin","-c","echo yourpassword| sudo -S your command"}; Runtime.getRuntime.exec(cmd);
Mas não tenho certeza se é recomendável.
Eu não sou o autor, eu encontrei isso lá: http://www.coderanch.com/t/517209/java/java/provide-password-prompt-through-Java