#!/usr/bin/awk -f BEGIN { beg=strftime("%Y-%m-%dT%H:%M",systime()-3600) ; #定义一个小时前的时间,并格式化日期格式 end=strftime( "%Y-%m-%dT%H:%M",systime()-60) ; #定义结束时间 #print beg; #print end; } $4 > beg && $4 < end {#定义取这个时间段内的日志 count[$12]+=1;#利用ip当做数组下标,次数当做数组内容 } END { for(i in count){#结束从数组取数据代表数组的下标,也就是ip if(count[i]>3) { #如果次数大于3次,做操作 print count [i]" "i; #system("iptables -I INPUT -S”i”j DROP" ) } } }
awk -F'"' -f check_nginx_log.awk /apps/nginx/logs/access.log