写一个shell脚本,统计nginx日志里最近1分钟每个ip的访问次数,大于100的通过ipsst进行封禁
#!/bin/bash
# 获取当前时间
time=$(date '+%d/%b/%Y:%H:%M:%S')
# 获取1分钟内的日志
log=$(grep "$time" /var/log/nginx/access.log)
# 统计每个IP的访问次数
ip_counts=$(echo "$log" | awk '{print $1}' | sort | uniq -c)
# 遍历统计结果
while read -r line; do
# 获取访问次数和IP地址
count=$(echo "$line" | awk '{print $1}')
ip=$(echo "$line" | awk '{print $2}')
# 如果访问次数大于100,则封禁IP
if [ $count -gt 100 ]; then
echo "$ip" | ipsst add
fi
done <<< "$ip_counts"
注意:需要安装ipsst命令行工具来进行封禁操作。
原文地址: https://www.cveoy.top/t/topic/sFJ 著作权归作者所有。请勿转载和采集!