Я пытаюсь завершить работу своего компьютера с Ubuntu с помощью Java-приложения, но, похоже, ничего не происходит. Вот мой код:
Runtime runtime = Runtime.getRuntime();
try {
Process proc = runtime.exec("sudo shutdown -h now");
}
catch (IOException e) {
e.printStackTrace();
}
Что мне не хватает?
Чтобы избежать того, что sudo
запрашивает пароль, отредактируйте файл sudoers
с помощью visudo
:
sudo visudo -f /etc/sudoers.d/shutdown
Это создаст новый файл в каталоге /etc/sudoers.d/
, который будет включен , оставив исходный файл sudoers
без изменений.
Если ваш пользователь называется myuser
, а ваш хост - myhost
, вы можете добавить эти строки
myuser myhost = (root) NOPASSWD: /sbin/shutdown
myuser myhost = (root) NOPASSWD: /sbin/reboot
Сохраните изменения и опробуйте их.
Кроме того, вы не должны делать e.printStackTrace()
, а использовать регистратор.
sudo
запрашивает пароль - вам необходимо предоставить его.