如何在java中为sudo命令提供密码

时间:2017-01-02 09:21:53

标签: java

Process p=Runtime.getRuntime().exec("sudo rm -rf /home/ftp");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
bw.write("qwerty");
bw.flush();

我已经编写了这段代码,但它无效

2 个答案:

答案 0 :(得分:1)

String[] cmd = {"/bash/bin","-c"," echo password| sudo -S rm -rf /home/ftp"}; 
Process p = Runtime.getRuntime.exec(cmd); 

使用管道为流程提供输入。 以空格开始echo,它会将其从bash历史记录中删除。

您也可以稍后删除历史记录:

new File(System.getProperty("user.home"), ".bash_history").delete();

但要小心。有一个技巧可以删除最后的条目。

答案 1 :(得分:0)

为用户分配所需的权限,并通过写入来关闭缓冲的编写器      bw.close();
如果你继续使用sudo模式,那么程序可能会删除其他应用程序以健康方式工作所需的一些重要文件。