shell 日志分析小工具

shell脚本 struggling 1414次浏览 0个评论

最近访问ftp所在的服务器时反应有点慢,于是想看看ftp是否有被爬虫爬过,然后随手写了一个简易版的日志分析工具,用来分析每日用户的来源地址及访问量。由于没有做日志切割,此脚本只是在访问日志中统计前一日的数据,想要统计更多的数据可以稍作修改。

[root@localhost nginx]# cat  static.sh 
#!/bin/bash
cat << EOF
------------------------------------
		日志分析小工具
------------------------------------	
EOF

LANG=en_US

Usage() {
	echo "Usage: $0 Logfile"
}

if [ $# -eq 0 ] ;then
	Usage
	exit 0
else
	Log=$1
fi

Tmpfile=$(mktemp)

Year=$(date |awk '{print $6}')
Mon=$(date |awk '{print $2}')
Day=$(date |awk '{print $3}')

Yesterday=$((Day-1))

echo -e "\n\033[31m-------the ${Year}-${Mon}-${Yesterday} log statistics as shown:--------\033[0m"

echo -e "\n\033[32m the UV in total yesterday:\033[0m\n"

cat $Log| sed -n "/${Yesterday}\/${Mon}\/${Year}:00/,/${Day}\/${Mon}\/${Year}:00/p" | awk  '{print $7}'|wc -l

echo -e "\n\033[32m Most of the time yesterday:\033[0m\n"

cat $Log |awk '{print $4}' |cut -c 14-18 |sort|uniq -c | sort -nr | head -10

echo -e "\n\033[32m Most of the page yesterday:\033[0m\n"

cat $Log |sed -n "/${Yesterday}\/${Mon}\/${Year}:00/,/${Day}\/${Mon}\/${Year}:00/p" | awk '{print $11}' |sort |uniq -c |sort -rn |head -10 

echo -e "\n\033[32m Most of the ip yesterday:\033[0m\n"

cat $Log| sed -n "/${Yesterday}\/${Mon}\/${Year}:00/,/${Day}\/${Mon}\/${Year}:00/p" | awk '{print $1}' | sort |uniq -c |sort -rn |head -10 > $Tmpfile
	
cat $Tmpfile | while read line;   
do
	num=$(echo $line|awk '{print $1}')
	echo -n "访问次数:$num   "
	ip=$(echo $line|awk '{print $2}')
	curl -s ip.cn?ip=$ip 
done

执行结果如下所示:

日志分析


DevOps-田飞雨 》》转载请注明源地址
喜欢 (3)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址