当前位置: 首页 > news >正文

根据nginx日志统计页面访问次数

 静态页面部署在nginx上,页面只有查看下载功能。

需求是统计每条访问次数和下载次数,根据日志分析写了一个shell脚本,触发脚本后生成一个html可以远程查看统计的数量。

#!/bin/bash
# nginx日志文件路径  
LOG_FILE="/usr/local/nginx/logs/access.log"  
#统计访问IP
#_index=$(grep "GET /public/index.html" "$LOG_FILE" | awk -F' ' '{print $1}' | sort | uniq -c)    
#_pdf=$(grep "GET /public/11.15.pdf" "$LOG_FILE" | awk -F' ' '{print $1}' | sort | uniq -c)   
#统计访问链接 
_index=$(grep "GET /public/index.html" "$LOG_FILE" |awk -F'[][]' '{print $2}')    
_pdf=$(grep "GET /public/11.15.pdf" "$LOG_FILE" | awk -F'[][]' '{print $2}')  
#结果写入日志     
echo "$_index" > public_index_access.log
echo "$_pdf" > public_pdf_access.log
#进行统计
echo "index.html access:<hr>" > public_access.log
cut -d: -f1 public_index_access.log | sort | uniq -c| awk '{print $2, $1}'| awk '{print $0, "<br>"}' >> public_access.log  
echo "<br><br>pdf access:<hr>" >> public_access.log
cut -d: -f1 public_pdf_access.log | sort | uniq -c| awk '{print $2, $1}'| awk '{print $0, "<br>"}'  >> public_access.log
sleep 1 
# 将访问统计数据插入到HTML页面中
ACCESS_STATS="$(cat public_access.log)"
html_content='
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>访问统计</title>
</head>
<body><h1>访问统计数据</h1><div id="access_stats">'$ACCESS_STATS'</div>
</body>
</html>
'# 将内容写入 HTML 文件
echo "$html_content" > index.html# 输出成功信息
echo "HTML file generated: index.html"

相关文章:

  • MySQL 事务的底层原理和 MVCC(二)
  • 在Go编程中调用外部命令的几种场景
  • 2023年【安全生产监管人员】考试题及安全生产监管人员找解析
  • 【SpringBoot系列教程-目录大纲】
  • 存储日志数据并满足安全要求
  • MCU内存基础知识
  • bclinux aarch64 openeuler 20.03 LTS SP1 部署 fastCFS
  • 电动汽车充放电V2G模型MATLAB代码
  • 生产问题 Recv-Q101
  • 深度学习之生成唐诗案例(Pytorch版)
  • 【LeetCode刷题】--40.组合总和II
  • 【shell脚本】全自动完成pxe无人值守批量装机脚本,匹配centos系列
  • Jetson JetPack-5.1.2-L4T-R35.4.1 修复deskew algorithm的问题
  • 基于Qt的UDP通信、TCP文件传输程序的设计与实现——QQ聊天群聊
  • Java Fasn 带您谈谈——开源、闭源
  • [笔记] php常见简单功能及函数
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • Laravel 实践之路: 数据库迁移与数据填充
  • React-生命周期杂记
  • SQLServer之创建数据库快照
  • 突破自己的技术思维
  • 用jQuery怎么做到前后端分离
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • $.ajax中的eval及dataType
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (4)logging(日志模块)
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Forward) Music Player: From UI Proposal to Code
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)nsfocus-绿盟科技笔试题目
  • (转)大型网站的系统架构
  • .net Signalr 使用笔记
  • .Net7 环境安装配置
  • .NET开发者必备的11款免费工具
  • .net网站发布-允许更新此预编译站点
  • [20180224]expdp query 写法问题.txt
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [Android]Tool-Systrace
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态
  • [GXYCTF2019]禁止套娃
  • [HNOI2008]玩具装箱toy
  • [IE9] IE9 Beta崩溃问题解决方案
  • [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
  • [javaSE] GUI(Action事件)
  • [Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目
  • [Linux]创建新用户并授予root权限
  • [linux]--关于进程概念(上)
  • [Linux]进程创建➕进程终止