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

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

我写了这段代码,但它没有用

最佳答案

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

使用管道为流程提供输入.
用空格开始回声,它将从bash历史中删除它.

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

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

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

点赞