Shell 脚本统计网站页面访问超过一定次数的IP并发邮件

回复 收藏
今天在论坛上看到同学去面试题目,是使用shell脚本统计网站页面访问超过一定次数的IP,并发邮件的,面试的笔试题目是在:http://www.apelearn.com/bbs/thread-11019-1-1.html
刚好之前写过一个《使用Shell 脚本防止SSH暴力破解 》的脚本,觉得思路都一样,就把之前的脚本修改了下,测试,还OK,当然肯定还有很多需要完善的。



脚本如下:
  1. #!/bin/bash
  2. #
  3. # balich@qq.com
  4. DefineTimes="40"
  5. ToDay=`date +"%y-%m-%d"`
  6. LogDir="/usr/local/nginx/logs/access.log"
  7. echo "The number of requests for more than DefineTimes." >> /data/nginx/logs/mails_${ToDay}_ip.txt
  8. awk '{print $1}' $LogDir |sort|uniq -c|sort -nr|awk '{print $2 ":" $1;}' >> /data/nginx/logs/access_ip_${ToDay}_.txt
  9.   for i in `cat /data/nginx/logs/access_ip_${ToDay}_.txt`
  10.     do
  11.         AccipTimes=`echo $i |awk -F ':' '{print $2}'`
  12.         AccIps=`echo $i |awk -F ':' '{print $1}'`
  13.         if [ $AccipTimes -gt $DefineTimes ]
  14.            then
  15.            echo -e "IP:$AccIps \nTimes:$AccipTimes" >> /data/nginx/logs/mails_${ToDay}_ip.txt
  16.            echo "###################################################" >> /data/nginx/logs/mails_${ToDay}_ip.txt
  17.         fi
  18.    done
  19. [ -f /data/nginx/logs/mails_${ToDay}_ip.txt ] && mail -s "Nginx access log ip" balich@qq.com < /data/nginx/logs/mails_${ToDay}_ip.txt
假如脚本的存放路径:/data/nginx/counter_nginx.sh,同样将其加入到任务计划执行,具体需要多长时间执行一次,依据情况吧。


2016-02-24 17:29 举报
已邀请:
0

we14578

赞同来自:

学习了

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: