【发布时间】:2012-05-30 09:33:48
【问题描述】:
我正在执行来自 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 编程)
【问题讨论】:
-
这对于简单的任务来说太多了。只需在调用命令时将用户名/密码发送到命令即可。阅读这些命令以了解确切的语法
-
您是否尝试在密码后发送
\n字符?您正在运行的外部应用程序可能需要它以CR和/或LF结束输入。 -
可能是终端程序需要一定格式的输入。
-
是的,我也尝试在密码后使用'\n'字符,但问题仍然存在
-
@Ruju 我正在尝试做类似的事情,你能提供你所说的 shell 脚本吗?
标签: java linux ubuntu terminal sudo