作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在从 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();
但问题是,它再次向我询问密码,因为我已经通过程序的输出流发送了密码。为了解决这个问题,我尝试了很多次但没有真正完成。
通过使用 shell 脚本,我可以向终端提供密码并且我的程序运行正常但这不是最灵活的方式。
你能建议我通过我的 java 程序提供密码的任何方式吗? (而不是 shell 编程)
最佳答案
你可以使用 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
关于java - 如何将用户输入从 java 程序发送到终端(即以编程方式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813608/
我是一名优秀的程序员,十分优秀!