从Java程序使用sudo启动脚本

时间:2019-01-18 04:47:57

标签: java shell ubuntu sudo

我有一个要求,我需要在swing UI中单击按钮时,使用sudo在ubuntu中运行脚本。

在Mac中,我只将open命令与Runtime.getRuntime.exec("open appname.app")

一起使用

,它会启动一个终端,要求我输入密码并执行脚本,但是在Linux中,它不能那样工作。

我已经在How to execute bash command with sudo privileges in 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一起使用

0 个答案:

没有答案