Взаимодействие с iptables через командную строку - PullRequest
0 голосов
/ 07 ноября 2010

Я пытаюсь создать программу на Java, которая является интерфейсом для iptables.Для этого я использую Java-класс Process и передаю команды.

Мне интересно, правильно ли я это делаю в целом.Например, здесь представлен выбор команд, которые сбрасывают 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();

Спасибо за любое направление!

Ответы [ 2 ]

4 голосов
/ 07 ноября 2010

Вам нужно прочитать выходные потоки, я думаю.В противном случае процесс может заблокироваться, и вы никогда не увидите ничего, что он говорит.

0 голосов
/ 15 мая 2017

Вы также можете просто попробовать прочитать и проанализировать файл, который iptables читает: "/etc/sysconfig/iptables".

Выполняется быстрее, чем * двоичный файл iptables 1005 *

...