我有一个这样的日志文件:
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