运行 使用 Java processBuilder 的 sudo 命令
Run sudo command using Java processBuilder
我需要 运行 来自 java 的 sudo 命令,并使用 processbuilder 或类似工具将输出重定向到文件。
两个问题:
- 使用 echo 传递 sudo 密码是否会按如下方式工作?
尽管文件已创建,但从未向其中写入任何内容。有什么想法吗?
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.
首先,您需要将 -S
与 sudo
结合使用,使其从标准输入中读取密码。
其次,您应该阅读错误流或将错误流重定向到某处以了解任何错误。
老问题,而不是尝试回显密码,你应该设置你的 sudoers 文件以允许该用户只允许没有密码的命令
myusername ALL = (root) NOPASSWD: /path/to/my/program
我需要 运行 来自 java 的 sudo 命令,并使用 processbuilder 或类似工具将输出重定向到文件。
两个问题:
- 使用 echo 传递 sudo 密码是否会按如下方式工作?
尽管文件已创建,但从未向其中写入任何内容。有什么想法吗?
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.
首先,您需要将 -S
与 sudo
结合使用,使其从标准输入中读取密码。
其次,您应该阅读错误流或将错误流重定向到某处以了解任何错误。
老问题,而不是尝试回显密码,你应该设置你的 sudoers 文件以允许该用户只允许没有密码的命令
myusername ALL = (root) NOPASSWD: /path/to/my/program