2010-11-07 68 views
0

我正在嘗試創建一個Java程序,它是iptables的前端。爲了達到這個目的,我使用了Java的Process類和pass命令。通過命令行與iptables進行交互

我想知道如果我一般正確地去做。例如,以下是一些將iptables重置爲其默認設置的命令選項,這些命令旨在按順序在終端中執行。我在這裏正確使用Process類嗎?

Process proc1 = Runtime.getRuntime().exec("iptables -P INPUT ACCEPT"); 
proc1.waitFor(); 
Process proc2 = Runtime.getRuntime().exec("iptables -P FORWARD ACCEPT"); 
proc2.waitFor(); 
Process proc3 = Runtime.getRuntime().exec("iptables -P OUTPUT ACCEPT"); 
proc3.waitFor(); 
Process proc4 = Runtime.getRuntime().exec("iptables -t nat -P PREROUTING ACCEPT"); 
proc4.waitFor(); 

感謝您的任何方向!

+0

幾乎沒有任何關於使用多個命令的文檔。 – 2010-11-07 02:08:19

回答

4

我想你需要閱讀輸出流。否則,這個過程可能會阻止,你永遠不會看到它說的任何東西。

0

您也可以嘗試讀取和解析iptables讀取的文件: 「/ etc/sysconfig/iptables」。

執行速度比運行iptables二進制更快