如何从Java后端使用sudo执行shell脚本?

时间:2019-05-22 12:06:59

标签: java linux bash shell ubuntu

我不知道如何从Java后端执行sudo some.sh之类的命令。 sudo是无密码的。

我尝试了exec()和builder,但没有任何运气(见下文)。如果我尝试传递exec(“ sudo touch text.txt”);可以。

 String[] cmdScript = new String[]{"/bin/bash", "/var/backup/dump/replication.sh"};
        Process procScript = Runtime.getRuntime().exec(cmdScript);

有什么主意我可能做错了吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我的猜测是:

String[] cmdScript = new String[]{"/bin/bash", "sudo /var/backup/dump/replication.sh"};

String[] cmdScript = new String[]{"/bin/bash", "sudo", "/var/backup/dump/replication.sh"};

由于sudo通常需要密码,因此您可能需要将密码传递到其中。

String[] cmdScript = new String[]{"/bin/bash -c", "echo 'password' | sudo -S /var/backup/dump/replication.sh"};

这未经测试,但可以使您走上正确的道路。如果没有,看来here已经解决。