我需要在java中运行sudo命令,并使用processbuilder或类似工具将输出重定向到文件。
两个问题:
虽然文件已创建,但没有任何内容写入。有什么想法吗?
ProcessBuilder conntrack_process = new ProcessBuilder("/bin/bash", "-c", "echo '<passwordhere>' | sudo conntrack -L");
conntrack_process.redirectOutput(new java.io.File("/home/<homedir>/conntrack_out.txt"));
Process ct_process = conntrack_process.start();
ct_process.waitFor();
ct_process.destroy();
我正在使用Ubuntu 16.04。
答案 0 :(得分:1)
旧问题但是您应该设置您的sudoers文件,而不是尝试回显密码,而只允许该命令没有该用户的密码
myusername ALL = (root) NOPASSWD: /path/to/my/program
答案 1 :(得分:0)
首先,您需要将-S
与sudo
一起使用,以便从其标准输入中读取密码。
其次,您应该在某处读取或重定向错误流,以了解任何错误。