如何从java程序向终端发送用户输入(即通过编程方式)?

时间:2012-05-30 09:33:48

标签: java linux ubuntu terminal sudo

我正在执行来自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编程)

1 个答案:

答案 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