запуск скрипта с sudo из Java-программы - PullRequest
0 голосов
/ 18 января 2019

У меня есть требование, где мне нужно запустить скрипт в 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

...