【发布时间】:2012-12-10 13:12:16
【问题描述】:
我正在尝试编写一个小型 Java 应用程序来覆盖我的 /etc/resolv.conf 文件(我在 Ubuntu 12.04 上)。为此,我需要提供我的root 密码:
myUser@myMachine:~$ sudo vim /etc/resolv.conf
[sudo] password for myUser: *****
所以这样做的过程分为三个步骤:
- 在终端输入
sudo vim /etc/resolv.conf - 终端要求我输入
root密码 - 我输入密码并按
[Enter]
根据我研究过的所有内容,我可以使用以下内容来执行上面的第 1 步:
try {
String installTrickledCmd = "sudo vim /etc/resolv.conf";
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(installTrickledCmd);
}
catch(Throwable throwable) {
throw new RuntimeException(throwable);
}
但是当它执行时,shell 会提示我的 Java 进程输入密码。我不确定如何等待(上面的步骤#2)然后将我的密码提供回shell(上面的步骤#3)。提前致谢。
【问题讨论】:
-
您也可以使用
Process.getOutputStream()代替echo-ing 密码,然后将密码写入该流。
标签: java linux command-line sudo