首页 > 系统相关 >nginx访问日志,写一个统计一个时间段内,每一分钟有多少个IP访问的shell脚本怎么写?

nginx访问日志,写一个统计一个时间段内,每一分钟有多少个IP访问的shell脚本怎么写?

时间:2023-04-22 23:22:16浏览次数:38  
标签:00 shell IP start ip 访问 time

可以使用 Shell 脚本结合 awk 命令和 sed 命令来实现对 Nginx 访问日志的统计。具体实现如下:

#!/bin/bash

# 访问日志文件路径
access_log="/var/log/nginx/access.log"

# 时间段
start_time=$(date -d "yesterday 00:00:00" "+%d/%b/%Y:%H:%M:%S")
end_time=$(date "+%d/%b/%Y:%H:%M:%S")

# 统计每分钟的 IP 访问数
awk -v start="$start_time" -v end="$end_time" \
  '$4 > "[" start && $4 < "[" end \
  {split($4,a,":"); time=a[2]":"a[3]; ip[$1,time]++} \
  END {for (i in ip) {split(i, a, SUBSEP); ips[a[1]][a[2]]++} \
        for (ip in ips) {printf("%s,", ip); \
                        for (time=0; time<=59; time++) \
                        {minute=sprintf("%02d", time); \
                         printf("%d,", ips[ip][minute])} \
                        printf("\n")}}' $access_log | \
sed 's/^[ \t]*//;s/[ \t]*$//' > ip_stats.txt

该脚本将访问时间段内每分钟的 IP 访问次数统计到了一个名为 ip_stats.txt 的文本文件中,格式如下:

IP地址,00,01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
192.168.1.1,0,2,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
192.168.1.2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5

其中,第一列代表 IP 地址,后面的列代表每分钟的IP访问次数。

标签:00,shell,IP,start,ip,访问,time
From: https://www.cnblogs.com/netflix/p/17344432.html

相关文章

  • nginx的location匹配顺序是怎么样的?rewrite转发到uptream和直接在proxy_pass转发到ups
    Nginxlocation匹配的顺序在Nginx配置文件中,location指令用于配置请求匹配到的URL路径对应的处理规则。location指令匹配URL路径的方式是先精确匹配,然后正则匹配,最后使用URI重写实现后备匹配。匹配顺序如下:先精确匹配location指令中以=开头的模式;然后正则匹......
  • SSH远程管理和访问控制
    拓补图:推荐步骤:安装ssh服务器端和客户端设置服务开机自动启动,配置身份验证的ssh,保证ssh服务器的安全性禁止为空密码访问,将ssh服务器端口修改为2222,在ssh服务器端创建bob和tom两个用户允许客户端192.168.100.20登录bob和root账户,禁止tom用户通过192.168.100.20登录配置免交互式身份......
  • win10在访问共享的时候出现问题,异常代码为0x80004005的解决方案
    在使用win10访问网上邻居的共享时候,意外跳出异常:0x80004005,同时无法访问网上邻居的电脑。百度网上的解决方案,大都是搞什么注册dll的操作,如regsvr32softpub.dll,regsvr32wintrust.dll之类后来又找到网上的这个修改注册表的操作,说是应对访问共享时候遇到该代码的方案,尝试后问题......
  • 后台拿Webshell总结
    Wordpress模板上传一句话后台->外观->主题->编辑选择文件为php后缀的模板,并写入一句话木马<?phpphpinfo();eval($_POST['cmd']);?>访问该文件,默认路径为http://www.cbi1.com/wp-content/themes/twentysixteen/archive.php用蚁剑连接一句话上传主题传一句话在网......
  • Vue Typescript 引入文件接口,就无法使用withDefaults
    就是代码写的不规范报错写法 import{Setting}from'@element-plus/icons-vue' import{defineProps,withDefaults}from'vue' import{PiProject}from'@/types/Project' interfaceProjectCardProps{ project:PiProject } constprops=de......
  • TypeScript中的实用工具类型(Utility Types)
    TypeScript中的实用工具类型是一些预定义的泛型类型,可用于操作或创建其它新类型。这些实用工具类型在所有TypeScript项目中都是全局可用的,因此无需添加任务依赖项即可使用它们。1.Partial<Type>将Type的所有属性都设置为可选的类型。1interfacePerson{2name:string;......
  • mysql设置允许外部访问
    配置mysql允许外部进行登录访问;登录进入mysql;mysql-uroot-p输入密码进入,usermysql;selecthost,userfromuser; 3.更新user表中root用户域属性,’%'表示允许外部访问updateusersethost='%'whereuser='root'; 4.执行以上语句之后再执行:FLUSHPRIVILEGES; ......
  • IP地址与主机名
    IP地址IP地址是联网计算机的网络地址,用于在网络中进行定位。每一台联网的电脑都会有一个地址,用于和其他计算机进行通讯IP地址主要有2个版本,V4版本和V6版本(V6很少用)IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192.168.88.101就是一个标准的IP地址可以通过命令:ifcon......
  • bash shell下最方便的字符串大小写转换方法
     用tr需要新增变量,用declare或typeset需要在变量赋值前或者赋值后单独声明,都有些麻烦此方法为bash4.0以后新增,bash4.02009年发布$test="abcDEF"#把变量中的第一个字符换成大写$echo${test^}AbcDEF#把变量中的所有小写字母,全部替换为大写$echo${test^^}ABCDEF#......
  • 【教程】在运行WeiPeiYang - Flutter项目时可能遇到的问题 (持续更新)
    在运行WeiPeiYang-Flutter项目时可能遇到的问题前言:本文目前的环境要求Flutter:2.8.0Dart:2.15.0保证从如下的地址克隆Q:打开项目之后发现没有Flutter的lib等文件夹确保在AndroidStudio内安装了Flutter插件,具体在File-Settings-Plugins内注意安装Flutter......