从 awk 结果中删除带有 iptables 的 ips

从 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 中,以便从 INPUT 中删除,但我不知道该怎么做

谢谢朋友。

答案1

我的尝试:

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

答案2

你将通过扩展失败2ban通过将自定义配置文件放入其.d配置目录。

尽量少做工作!

答案3

您可以编写一个脚本,循环遍历您的awk结果并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

相关内容