用awk从iptables中删除ips结果

我有一个这样的日志文件:

Frq:15 IP:0.0.0.0 Date: 2014-03-21 12:19:31 AM Frq:9 IP:198.252.206.25 Date: 2014-03-21 12:19:31 AM 

现在我用awk获得ip地址列:

 cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' 

结果是:

 0.0.0.0 198.252.206.25 

我想添加这个IP地址到iptables从inputDROP,但我不知道如何

谢谢朋友。

我的尝试:

 awk '{sub("IP:", "", $2); print $2}' /tmp/test | xargs -n1 -I{} iptables -A INPUT -s {} -j DROP 

通过将自定义configuration文件放入其.d config目录来扩展fail2ban ,您将会走得更远。

做尽可能less的工作!

你可以写一个脚本来循环你的awk结果,并在运行中创build适当的iptables规则:

 #!/bin/sh cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' | while read IP do iptables -A INPUT -s $IP -j DROP done 

但是,我不知道你的上下文以及你的日志文件是如何被信任的,但这是危险的,你应该调查你正在丢失的IP地址。

举一个例子,下面是127.0.0.1一个例外:

 #!/bin/sh cat /tmp/test | awk '{print $2}'|awk '{gsub("IP:", "");print}' | while read IP do if [ "$IP" != "127.0.0.1" ]; then iptables -A INPUT -s $IP -j DROP fi done