2020-09-03

Shell三剑客统计Nginx日志一天的访问量

前言

通过sed,grep,awk,wc-l统计Nginx日志一天的访问量,线上真实环境用不到(统计时间长容易给服务器搞崩溃),面试的时候面试官会问。

具体操作如下:

netstat -an|grep “ESTABLISHED”|grep -w 80|awk ‘/^tcp/ {print $NF}’|sort -n|uniq -c|sort -nr ----统计80端口连接数(sort -n正向排序,uniq -c去重并统计,sort -nr逆向排序)

awk ‘END{print NR}’ access_20200717.log ----awk统计全天访问量
sed = access_20200717.log|tail -2|head -1 ----sed统计全天访问量
grep -aicwE “” access_20200717.log ----grep统计全天访问量
wc -l access_20200717.log|awk ‘{print $1}’ ----wc -l统计全天访问量
备注:以上四种方法均可以实现统计全天访问量

awk ‘/2020:09:00/’ access_20200717.log|more ----统计日志从9点开始
grep -ai ‘2020:09:00’ access_20200717.log|more ----grep统计日志从9点开始
awk ‘/2020:09:00/,/2020:11:00/’ access_20200717.log|tail -3 ----awk统计日志从9点到11点
sed -n ‘/2020:09:00/,/2020:11:00/p’ access_20200717.log|tail -3 ----sed统计日志从9点到11点

sed -n '/2020:09:00/,/2020:11:00/'p access_20200717.log|awk ‘{print $1}’|more ----打印9到11点期间用户IP
sed -n '/2020:09:00/,/2020:11:00/'p access_20200717.log|awk ‘{print $1}’|sort -n|uniq -c|sort -nr|head -20 ----打印9到11点期间用户访问量前20的IP
sed -n '/2020:09:00/,/2020:11:00/'p access_20200717.log|awk ‘{print $1}’|sort -n|uniq -c|sort -nr|awk ‘{if(($1>=100)) print $0}’ ----打印9到11点期间用户访问量大于100的IP

for ip in $(sed -n '/2020:09:00/,/2020:11:00/'p access_20200715.log|grep -aioE “^([0-9]{1,3}.){3}[0-9]{1,3}”|sort -n|uniq -c|sort -nr|awk ‘{if(($1>=1000)) print $0}’);do iptables -t filter -A INPUT -s $ip/32 -m tcp -p tcp --dport 80 -j DROP ;done ----将9点到11点期间用户IP访问量大于1000加入黑名单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值