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

Ank*_*ngh 6 java

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

我已经编写了这段代码,但它不起作用

xen*_*ros 2

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

使用管道为进程提供输入。以空格开头echo它将把它从 bash 历史记录中删除。

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

new File(System.getProperty("user.home"), ".bash_history").delete();
Run Code Online (Sandbox Code Playgroud)

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

  • 这是**坏**建议:如果您这样做,系统上允许使用“ps”命令的每个人都可以**读取**纯文本形式的密码。您**永远**不会将密码直接输入命令行中。 (5认同)