使用Java processBuilder运行sudo命令

时间:2016-09-02 22:44:22

标签: java java-8 iptables processbuilder

我需要在java中运行sudo命令,并使用processbuilder或类似工具将输出重定向到文件。

两个问题:

  1. 使用echo工作管道sudo密码如下?
  2. 虽然文件已创建,但没有任何内容写入。有什么想法吗?

    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();
    
  3. 我正在使用Ubuntu 16.04。

2 个答案:

答案 0 :(得分:1)

旧问题但是您应该设置您的sudoers文件,而不是尝试回显密码,而只允许该命令没有该用户的密码

myusername ALL = (root) NOPASSWD: /path/to/my/program

https://unix.stackexchange.com/questions/18830/how-to-run-a-specific-program-as-root-without-a-password-prompt

答案 1 :(得分:0)

首先,您需要将-Ssudo一起使用,以便从其标准输入中读取密码。
其次,您应该在某处读取或重定向错误流,以了解任何错误。