2011-04-18 11 views
1
#!/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リスト内にあるかどうかをチェックし、すでに内部に入っているかどうかを確認するには、ループを続行する必要があります。forループのいくつかの要素をスキップできますか?

チェックステートメントは、このようになります:私はここでこれを置くことができますどのように

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

答えて

3

、質問は何ですか?どのように続けるか壊すか?

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

などです。

+2

@Beck:また、 'grep -q $ i'を使って出力を抑制し、値の存在をチェックすることもできます。 – DarkDust

+0

ありがとうございます。それは働いています:) – Somebody

+0

ダーク;) – Somebody

1

は、次のことを試してください。

だから、
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 
関連する問題