本文介绍了如何在 Java 中以 sudo 权限执行 bash 命令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用 ProcessBuilder 来执行 bash 命令:
I'm using ProcessBuilder to execute bash commands:
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
Process pb = new ProcessBuilder("gedit").start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
但我想做这样的事情:
Process pb = new ProcessBuilder("sudo", "gedit").start();
如何将超级用户密码传递给 bash?
How to pass superuser password to bash?
("gksudo", "gedit")
不会成功,因为它从 Ubuntu 13.04 开始就被删除了,我需要使用默认可用的命令来做到这一点.
("gksudo", "gedit")
will not do the trick, because it was deleted since Ubuntu 13.04 and I need to do this with available by default commands.
编辑
gksudo 在上次更新时回到了 Ubuntu 13.04.
gksudo came back to Ubuntu 13.04 with the last update.
推荐答案
我认为你可以使用这个,但我有点犹豫要不要发布它.所以我只想说:
I think you can use this, but I'm a bit hesitant to post it. So I'll just say:
使用它需要您自担风险,不推荐,不要起诉我等...
public static void main(String[] args) throws IOException {
String[] cmd = {"/bin/bash","-c","echo password| sudo -S ls"};
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();
}
这篇关于如何在 Java 中以 sudo 权限执行 bash 命令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!