次のコマンドを実行できるLinuxまたはJavaAPIがあるかどうか疑問に思いました。
iptables -A INPUT -s 67.215.4.101 -j DROP
あるいは、Groovyでこれを行う方法がない場合は、それについても知りたいと思います。
Javaプロセスをrootとして実行することに抵抗がある場合は、これを回避する別の方法があります。FIFOソケット(rootとして実行)でリッスンしてからiptablesを呼び出す、お気に入りの言語で記述された単純なデーモンプロセスを作成できます。上記の例から、おそらくIPアドレスをデーモンに渡すことができます。Javaプログラムから、FIFOコマンドをデーモンプロセスに送信できます。
私は最近このテクニックを使用しました、そしてそれはうまくいきました。私の場合、単純なJNIインターフェースを使用してFIFOメッセージをデーモンプロセスに送信しました。
おそらくそうではありません。最善の策は、それを外部コマンドとして実行することです。例:を使用しSystem.exec(...)
ます。
明らかに、コマンドはroot権限で実行する必要があり、それはコマンドの実行方法に影響を及ぼします。
Groovyでは、文字列には次のexecute()
メソッドがあります。
"iptables -A INPUT -s 67.215.4.101 -j DROP".execute()
このページを見てください。
もちろん、考慮する必要のある実行特権があります。