0

我想知道是否有 Linux 或 Java API 可以让我执行命令:

iptables -A INPUT -s 67.215.4.101 -j DROP

或者,如果在 Groovy 中可以做到这一点,我也想知道这一点。

4

3 回答 3

3

如果您不习惯以 root 身份运行您的 java 进程,这里有另一种解决方法。您可以编写一个用您喜欢的语言编写的简单守护进程,该进程侦听 FIFO 套接字(以 root 身份运行),然后调用 iptables。从您上面给出的示例中,您可能只需将 IP 地址传递给守护程序。从 Java 程序中,您可以向守护进程发送 FIFO 命令。

我最近使用了这种技术,效果很好。在我的例子中,我使用了一个简单的 JNI 接口将 FIFO 消息发送到守护进程。

于 2011-02-06T14:08:52.993 回答
2

在 Groovy 中,字符串有一个execute()方法:

"iptables -A INPUT -s 67.215.4.101 -j DROP".execute()

看看这个页面

当然,还有需要考虑的执行权限。

于 2011-02-06T23:11:12.410 回答
2

可能不是。您最好的选择是将其作为外部命令运行;例如使用System.exec(...).

显然,该命令需要以 root 权限运行,这对您运行它的方式有影响。

于 2011-02-06T03:02:41.453 回答