1.脚本介绍
- 我的个人博客: http://halo.axz99.cn(博客中有更多的知识分享,希望大家都能够来增加我的人气!)
这个脚本是我用python书写的一个可以获取Linux系统任意nginx日志中的IP列的信息,并将能够输出该IP所属的地区省、市信息,用到了request、os、sys等模块,并以函数传参形式调用API接口进行实现,如果想知道谁访问你网站访问最多,而且还想知道是哪个地区的话,那么用我这脚本就对了,他可以帮你解决需求问题,做事杠杠滴,各位道友,还有若是想去分析error错误日志呢,也可以使用我这个,只要日志格式第1列是IP地址,那就可以使用这个脚本。
2.效果演示
- 我以一个网站的nginx访问日志来实验
3.源码获取
- Gitee仓库:https://gitee.com/xiaoxing-classmate/get_ipmsg.git
- 我的博客里也有完整代码哈,大家可以去访问一下:首页 | 欢迎来到小政同学的博客
import requests
import subprocess
import sys
#Author:王晓政
#QQ:3415278922
#Date:2024-7-13
#获取输入的第一个值
ip_dir = sys.argv[1]
filelog = ip_dir
#指定nginx日志文件路径
#ip_dir = '/var/log/nginx/web20-access.log.1'
# 将IP格式化
def ip_formatting(ips):
# 创建一个空列表来存储IP地址
ip_addresses = []
# IP地址列表的原始文本
ips_text = f"""
{ips}
"""
# 使用strip移除首尾空白字符,然后按行分割文本
ip_lines = ips_text.strip().split('\n')
# 遍历每一行并将其添加到列表中
for ip in ip_lines:
ip_addresses.append(ip)
# 返回结果列表
return ip_addresses
# 获取IP地址文件
def get_ipaddr(dir):
# 执行cat命令
cat_proc = subprocess.Popen(['cat', f'{dir}'], stdout=subprocess.PIPE)
# 管道输出给awk命令,打印每行的第一个字段
awk1_proc = subprocess.Popen(['awk', '{print $1}'], stdin=cat_proc.stdout, stdout=subprocess.PIPE)
cat_proc.stdout.close()
展示部分代码..............................................
4.作者想说
- 我的个人博客: http://halo.axz99.cn(博客中有更多的知识分享,希望大家都能够来增加我的人气!)
我是一个IT行业人员,接触过编程,前端学习前端三剑客、ajax、Nodejs、Vue框架等技术,可以自己搭建出基础的小网站,同时运维方面我也会很多,比如LNMP架构、shell编程、Docker容器、CI/CD,zabbix和Prometheus监控,kafka等MQ产品,也用过一些阿里云的产品,比如OSS、ECS、SLB、WAF防火墙、rds for mysql等,要告诉各位道友,其实学习会让你的身价变高,加油吧大家,努力学习新的技术,更加方便我们工作,让我们一起变得更加优秀!