Red Hat Enterprise Linux Server release 7.4上でfirewalldを実行するプログラムをJavaで作成しています。
コマンドを直接入力した場合は登録できるのですが、ProcessBuilderから同じコマンドを実行した場合にERROR: INVALID_RULEとなり、登録に失敗してしまいます。ProcessBuilderを使った場合に行わなくてはならない注意点などありますでしょうか?
java
1 final File file = new File("/dev/null"); 2 3 final ProcessBuilder processBuilder = new ProcessBuilder( 4 "firewall-cmd", "--permanent", "--zone=drop", target.toString()); 5 processBuilder.redirectOutput(file); 6 processBuilder.redirectInput(file); 7 processBuilder.redirectErrorStream(true); 8 final Process process = processBuilder.start(); 9以下省略
この時のtarget.toString()は
--add-rich-rule='rule family=ipv4 source address=192.168.10.10 port port=54500 protocol=tcp drop'
としており、事前に以下のコマンドを入力した場合に登録が可能なことを確認したのですが、
firewall-cmd --permanent --zone=drop --add-rich-rule='rule family=ipv4 source address=192.168.10.10 port port=54500 protocol=tcp drop'
プログラムから実行すると以下のエラーとなってしまいます。
/var/log/firewalld
ERROR: INVALID_RULE: internal error in _lexer(): rule family=ipv4 source address=192.168.10.10 port port=54500 protocol=tcp drop
実行環境は
OS : Red Hat Enterprise Linux Server release 7.4
Java: OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
firewall-cmd: 0.4.4.4
全てrootアカウントで実行しています。
回答1件
あなたの回答
tips
プレビュー