求一个分析日志的shell脚本
要求:1、总访问数2、独立访客数3、访问IP统计,访问url统计,来源统计,状态码统计(最多的前十位)(尽量少用正则匹配)日志格式:来源IP时间HTTP/1.1-状态码T...
要求:
1、总访问数
2、独立访客数
3、访问IP统计,访问url统计,来源统计,状态码统计 (最多的前十位)
(尽量少用正则匹配)
日志格式:
来源IP 时间 HTTP/1.1 - 状态码 TCP_MEM_HIT 390 HEAD 域名 - - - - 访问IP image/
gif - curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 0 - - *Not IP address [0]* NONE - - 来源referer - 展开
1、总访问数
2、独立访客数
3、访问IP统计,访问url统计,来源统计,状态码统计 (最多的前十位)
(尽量少用正则匹配)
日志格式:
来源IP 时间 HTTP/1.1 - 状态码 TCP_MEM_HIT 390 HEAD 域名 - - - - 访问IP image/
gif - curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2 0 - - *Not IP address [0]* NONE - - 来源referer - 展开
1个回答
展开全部
大致如下:主要要查看好日志中的字段,方便Awk中$n对应,下面的如果有问题,微调一下即可。日志文件路径是假定。
#!/bin/bash
Log_file="/var/log/http.log"
Total_Num=`cat $Log_file|awk '/来源IP/{print}'|wc -l`
User_Num=`cat $Log_file|awk '{a[$1]++}END{for(j in a) print a[j],j}'|wc -l`
Access_Num=`cat $Log_file|awk '{a[$14]++}END{for(j in a) print a[j],j}'|sorn -n|head 10`
Url_Num=`cat $Log_file|awk '{a[$17]++}END{for(j in a) print a[j],j}'|sorn -n|head 10`
Src_Num=`cat $Log_file|awk '{a[$1]++}END{for(j in a) print a[j],j}'|sorn -n|head 10`
Status_Num=`cat $Log_file|awk '{a[$6]++}END{for(j in a) print a[j],j}'|sorn -n|head 10`
echo "总访问数:$Total_Num"
echo "独立问数:$User_Num"
echo "访问IP:$Access_Num"
echo "访问url统计:$Url_Num"
echo "来源统计:$Src_Num"
echo "状态码统计:$Status_Num"
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询