一条命令,统计“昨天访问最多的 IP 地址”
在 Linux 运维过程中,经常会遇到这样的需求:想看看昨天都有哪些 IP 访问了我们的网站,访问最多的是谁?
今天就分享一条命令,配合 nginx 或 apache 的 `access.log`,快速统计出“昨天访问最多的 IP 排行前 20 名”。
思路解析
1. nginx 日志默认格式中包含了访问时间,例如:
123.45.67.89 - - "GET /index.html HTTP/1.1" 200 -
2. 我们只需要:
用 `grep` 筛选出“昨天”的访问记录;
用 `awk` 抽出 IP(即日志的第 1 列);
然后用 `sort | uniq -c | sort -nr` 来统计和排序。
命令如下
grep "$(date -d yesterday '+%d/%b/%Y')" /www/wwwlogs/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20
示例输出
563 123.45.67.89
231 111.222.333.444
207 118.107.12.4
...
实际路径说明
请根据你的实际日志文件位置替换 `/www/wwwlogs/access.log`:
宝塔面板:可能是 `/www/wwwlogs/www.你的域名.log`
nginx 默认:可能是 `/var/log/nginx/access.log`
apache 默认:可能是 `/var/log/httpd/access_log`
建议:
可以加 `> /root/yesterday_top_ip.txt` 导出结果文件。
想每天自动统计?可以加到 `crontab` 定时任务里。
想查具体 IP 的行为?再配合 `grep 123.45.67.89 access.log` 查看详情。
页:
[1]