我正在从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编程)
解决方法:
您可以使用sudo的-S选项来实现:
String[] cmd = {"/bash/bin","-c","echo yourpassword| sudo -S your command"};
Runtime.getRuntime.exec(cmd);
但是我不确定这是值得推荐的.
标签:java,linux,ubuntu,terminal,sudo
来源: https://codeday.me/bug/20191012/1899995.html