У меня есть требование, где мне нужно запустить скрипт в Ubuntu с помощью sudo по нажатию кнопки в пользовательском интерфейсе Swing.
В Mac я просто использую команду открытия с Runtime.getRuntime.exec("open appname.app")
, и он запускает терминал, запрашивающий у меня пароль, и выполняет скрипт, но в Linux он не работает таким образом.
Я пробовал решение в Как выполнить команду bash с привилегиями sudo в Java? , но у меня не получилось.
public static void main(String[] args) throws IOException {
String[] cmd = {"/bin/bash","-c","echo mysudopassword| sudo -S <path of my script>"};
Process pb = Runtime.getRuntime().exec(cmd);
String line;
BufferedReader input = new BufferedReader(new InputStreamReader(pb.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
}
Даже попробовал это так, как показано ниже
{"/bin/bash","-c","echo \"password\"| sudo -S ls"};
Можно ли передать пароль в sudo, а затем запустить скрипт или открыть терминал, запрашивающий пароль, а затем запустить его?
Я использую java8 с Ubuntu 18.04