Как я могу пропустить некоторые элементы цикла for? - PullRequest
1 голос
/ 18 апреля 2011
#!/bin/sh
BLOCKDB="/opt/ip.blocked"
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
  sudo iptables -A INPUT -s $i -j DROP
  sudo iptables -A OUTPUT -d $i -j DROP
done

Мне нужен дополнительный оператор внутри цикла, чтобы проверить, находится ли IP-адрес в списке iptables и, если он уже внутри, продолжить цикл.

Контрольная выписка будет такой:

iptables -L INPUT -v -n | grep $i

Как я могу поставить это здесь?

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

Итак, в чем вопрос? Как продолжить или прервать?

iptables -L INPUT -v -n | grep $i && continnue

например.

1 голос
/ 18 апреля 2011

попробуйте следующее:

for i in $IPS
do
    sudo iptables -L INPUT -v -n | grep $i
    if [ $? -eq 0 ]
    then
        sudo iptables -A INPUT -s $i -j DROP
        sudo iptables -A OUTPUT -d $i -j DROP
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...