使用带有注释的列表中的iptables阻止ips

时间:2013-12-25 00:23:46

标签: bash shell scripting

我有以下ip阻止列表:

123.151.149.222#China Telecom TIANJIN, CN
91.188.124.0/23#Hosting Company, PL
134.145.0.0/16#Shell Information Technology International, CN
134.146.0.0/15#Shell Information Technology International, CN

我想用iptables阻止那些ips:

BANNED_IPS=$(egrep -v -E "^#|^$" /etc/blocked.ips.list)

for ip in $BANNED_IPS
do
    iptables -A INPUT -s $ip -m comment --comment "$comment" -j DROP
done

示例: $ ip 应为123.151.149.222 $ comment 应为China Telecom TIANJIN, CN。是的,我知道上面的脚本不起作用。我希望脚本与上面的脚本一样。

问题:我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

IFS='#'
egrep -v '^#|^$' /etc/blocked.ips.list |
    while read ip comment
    do
        $BANNED_IPS =A INPUT -s $ip -m comment --comment "$comment" -j DROP
    done

说明:

IFS='#'

更改read使用的shell的字段分隔符和变量扩展后的字拆分。