主要用于使用宝塔的nginx,在wwwlogs下查找所有网站的accesslog,统计访问量前10的IP
#!/bin/bash
# 主要用于使用宝塔的nginx,在wwwlogs下查找所有网站的accesslog,统计访问量前10的IP
# 日志目录
LOG_DIR="/www/wwwlogs"
# 临时文件,用于存储所有日志文件的统计结果
TMP_FILE="/tmp/ip_counts.txt"
# 清除临时文件(如果已存在)
> "$TMP_FILE"
# 遍历日志目录中的所有文件
for LOG_FILE in "$LOG_DIR"/*.log; do
# 排除error.log文件
if [[ ! "$LOG_FILE" == *"error.log" ]]; then
# 使用awk提取IP地址并计数,然后将结果追加到临时文件中
# 注意:这个awk命令假设IP地址是每行的第一个由空格分隔的字段
awk '{print $1}' "$LOG_FILE" | sort | uniq -c | sort -nr >> "$TMP_FILE"
fi
done
# 从临时文件中提取访问次数最多的前10个IP
sort -nr -k1,1 "$TMP_FILE" | uniq -f1 | head -n 10
# 可选:删除临时文件
rm "$TMP_FILE"