查找nginx访问日志中的IP

xiaolv
19
2024-05-13

主要用于使用宝塔的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"

动物装饰