Я пытаюсь написать небольшое приложение 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);
}
Но когда это выполняется, оболочка захочет запросить у моего процесса Java пароль. Я не знаю, как дождаться этого (шаг № 2 выше), а затем передать мой пароль обратно в оболочку (шаг № 3 выше). Заранее спасибо.
echo
ввода пароля вы также можете использоватьProcess.getOutputStream()
, а затем запишите пароль на этот поток. - person JimmyB   schedule 24.12.2012