linux nginx日志统计,每个路径的访问次数

sed -n ‘/15/Dec/2021:16:55:00/,/15/Dec/2021:17:05:00/p’ localhost_access_log.2021-12-15.txt |sed ‘s/.[//’ |sed 's/?.//’ |awk ‘{print $1 " " $4}’|awk ‘{x[$1" "$2]++;} END{for(i in x) print(i “:” x[i])}’ > tongji.txt

### 解析日志文件并统计客户端IP和域名访问次数Linux 环境下,可以利用 `awk` 和其他命令行工具来解析日志文件中的客户端 IP 地址以及对应的域名,并进一步统计它们的访问频率。以下是实现这一目标的具体方法。 #### 方法概述 通过组合使用 `cat`, `grep`, `awk`, `sed`, `sort`, 和 `uniq` 工具,可以从日志文件中提取所需的信息并完成统计工作。具体操作如下: 1. **提取客户端IP地址** 使用 `awk` 提取每条记录中的第1列作为客户端IP地址[^1]。 2. **过滤特定条件的日志数据** 如果需要排除某些特定类型的请求(如错误码404),可以通过 `grep` 或者扩展的 `awk` 条件语句进行筛选[^2]。 3. **去重与统计** 利用 `sort` 对提取的数据排序后,再配合 `uniq -c` 进行计数处理[^3]。 4. **匹配域名部分** 若需分析的是用户代理字符串或其他字段,则可借助正则表达式或者截断功能获取相关内容[^4]。 #### 实现脚本示例 下面提供一段完整的Shell脚本来演示如何从标准Apache/Nginx格式access_log中分别计算各个唯一IP及其关联主机名(如果存在的话)被调用多少次: ```bash #!/bin/bash LOG_FILE="path/to/your/access.log" # Step 1: Extract all unique IPs along with their counts. echo "Top Visiting IPs:" cat "$LOG_FILE" | \ awk '{print $1}' | \ sort | \ uniq -c | \ sort -rn | head # Optional step to resolve DNS names (may take time). #echo "Resolving Hostnames..." #while read count ip; do # host=$(getent hosts "$ip" | cut -d ' ' -f 1); # echo "${count}\t${host:-$ip}"; #done <<< "$(cat "$LOG_FILE" | awk '{print $1}' | sort | uniq -c)" # Alternatively, extract User-Agent strings and filter out bots/crawlers etc.. echo "" echo "Unique Non-Bot Visitors by Browser Type:" cat "$LOG_FILE" | \ awk '{print $(NF)}' | \ grep -vE "(bot|spider)" | \ sed 's/"//g' | \ sort | \ uniq -c | \ sort -nr | head ``` 上述脚本分为两大部分: - 首先展示最频繁访问系统的前几个真实用户的IPv4地址; - 接着尝试识别非爬虫类访客所使用的浏览器种类分布情况。 注意替换变量 `LOG_FILE` 的路径为你实际存储web服务器活动历史的地方。 #### 注意事项 - 上述例子假设您的HTTP(S)服务产生的日志遵循常见的Common Log Format(CLRF),即每一行为一条独立事件描述,默认包含时间戳、发起方网络位置标识符(CLIAddr)等基本信息。 - 当涉及到DNS反向查找(`getent`)时可能会显著延长执行周期,因此建议仅用于调试目的而非生产环境报表生成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

micro_cloud_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值