今天在论坛上看到同学去面试题目,是使用shell脚本统计网站页面访问超过一定次数的IP,并发邮件的,面试的笔试题目是在:http://www.apelearn.com/bbs/thread-11019-1-1.html
刚好之前写过一个《使用Shell 脚本防止SSH暴力破解 》的脚本,觉得思路都一样,就把之前的脚本修改了下,测试,还OK,当然肯定还有很多需要完善的。
脚本如下:假如脚本的存放路径:/data/nginx/counter_nginx.sh,同样将其加入到任务计划执行,具体需要多长时间执行一次,依据情况吧。
刚好之前写过一个《使用Shell 脚本防止SSH暴力破解 》的脚本,觉得思路都一样,就把之前的脚本修改了下,测试,还OK,当然肯定还有很多需要完善的。
脚本如下:
- #!/bin/bash
- #
- # balich@qq.com
- DefineTimes="40"
- ToDay=`date +"%y-%m-%d"`
- LogDir="/usr/local/nginx/logs/access.log"
- echo "The number of requests for more than DefineTimes." >> /data/nginx/logs/mails_${ToDay}_ip.txt
- awk '{print $1}' $LogDir |sort|uniq -c|sort -nr|awk '{print $2 ":" $1;}' >> /data/nginx/logs/access_ip_${ToDay}_.txt
- for i in `cat /data/nginx/logs/access_ip_${ToDay}_.txt`
- do
- AccipTimes=`echo $i |awk -F ':' '{print $2}'`
- AccIps=`echo $i |awk -F ':' '{print $1}'`
- if [ $AccipTimes -gt $DefineTimes ]
- then
- echo -e "IP:$AccIps \nTimes:$AccipTimes" >> /data/nginx/logs/mails_${ToDay}_ip.txt
- echo "###################################################" >> /data/nginx/logs/mails_${ToDay}_ip.txt
- fi
- done
- [ -f /data/nginx/logs/mails_${ToDay}_ip.txt ] && mail -s "Nginx access log ip" balich@qq.com < /data/nginx/logs/mails_${ToDay}_ip.txt
编辑回复