直接用命令组合可快速掌握某ip访问频率:先grep加wc -l统计总次数;再用awk按时间戳过滤分析活跃时段;接着用sort、uniq -c、sort -nr做全量ip频次排名对比;最后结合状态码(如404、200)识别行为意图。

直接用命令组合就能快速掌握某个 IP 的访问频率,核心是提取、计数、排序三步,不需要额外工具。
快速统计该 IP 总访问次数
最简单的方法是用 grep 配合 wc -l:
grep '203.123.45.67' /var/log/apache2/access.log | wc -l- 把
203.123.45.67换成你要查的真实 IP - 结果就是它在整份日志里出现的总行数(即请求次数)
看它在不同时间段的活跃程度
Apache 日志第 4 字段含时间戳,可用 awk 精确过滤小时或分钟级数据:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 查今天上午 9 点的访问:
awk '$4 ~ /\[04\/Jun\/2026:09:/ {print $0}' /var/log/apache2/access.log | grep '203.123.45.67' | wc -l - 查某分钟内密集请求(比如 09:23):
awk '$4 ~ /\[04\/Jun\/2026:09:23:/ && $1=="203.123.45.67"' /var/log/apache2/access.log | wc -l - 注意:日期格式需与你日志一致(如
[04/June/2026或[04/Jun/2026),可用head -1 access.log先确认
对比它和其他 IP 的频次排名
如果想判断这个 IP 是否异常高频,建议拉出全量 TopN 做横向对比:
- 列出所有 IP 访问次数并排序:
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -20 - 再单独找目标 IP 行:
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | grep '203.123.45.67' - 若它排进前 5 且数值远超均值(比如单 IP 占总请求 15% 以上),就值得进一步关注
结合状态码识别行为意图
光看次数不够,加上 HTTP 状态码能区分是正常浏览还是试探扫描:
- 只统计它的 404 请求(可能在扫目录):
awk '$1=="203.123.45.67" && $9=="404"' /var/log/apache2/access.log | wc -l - 查它的 200 成功请求占比:
awk '$1=="203.123.45.67" {n++; if($9=="200") ok++} END{print "OK:",ok,"/",n,"("int(ok/n*100)"%)"}' /var/log/apache2/access.log - 大量 403/404 + 少量 200,大概率是自动化探测;高 200 比例则偏向真实用户









