我正在执行来自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();
但问题是,它再次向我询问密码,因为我已经通过我的程序的outputstream发送了密码。 为了解决这个问题,我尝试了很多次但实际上没有完成。
通过使用shell脚本,我可以为终端提供密码,我的程序运行正常 但它不是最灵活的方式。
你能建议我通过我的java程序提供密码吗? (而不是shell编程)
答案 0 :(得分:2)
您可以使用sudo的-S
选项执行此操作:
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