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

分析nginx ip地址来源

  接上一篇的日志格式,我们已经筛选出了所有的IP地址、做法稍有不同。nginx正则把IP写进文件里、还是那句话数据太大我们不能写进列表里边:

def getIP():
    f = open(log,'r') 
    IPdic={}
    for logline in f.readlines():
        matchs = p.match(logline)
        if matchs !=None:
            allGroups =matchs.groups()
            IP=allGroups[0] 
            f1 = open('/tmp/ip.txt','a')
            f1.write("%s\n"%(IP))
            f1.close()
    f.close()

2、调用IP模块进行,操作。可以用Pip安装。模块介绍:https://github.com/lxyu/17monip:

 pip install 17monip

3、模块使用。

[root@monitor python]# cat  query.py 
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import IP
def CheckIP():
    outip = open('/tmp/ip.txt','r')
    output = open('/tmp/output.txt','w')
    for line in outip:
        listIP=line.strip('\n')
        local = IP.find(listIP).strip(" ")
        if local != "" :
            output.write(local.encode('utf-8'))
            output.write('\n')
    output.close()
    outip.close()
if __name__=="__main__":
    CheckIP()

4、在生成文件,用中文写入字典,标记出来,有个地方需要注意的是,当我们字典使用中文的适合,要用json的方式导出数据:

[root@monitor python]# cat queryadd.py 
#!/usr/bin/env python
#coding=utf-8 
import json 
def GetAddress():
    pvdic={}
    f = open('/tmp/output.txt','r')
    n = 0
    for line in f:
        add = line.split()
        address=add[1]
        pvdic[address]=pvdic.get(address,0) +1
    pvdic=sorted(pvdic.iteritems(),key=lambda c:c[1],reverse=True)
    return  json.dumps(pvdic,encoding="utf-8",ensure_ascii=False)
    f.close()
if __name__=='__main__':
    print GetAddress()

5、生成效果:

[root@monitor python]# python queryadd.py 
[["广东", 86], ["河北", 81], ["河南", 78], ["山东", 43], ["浙江", 43], ["福建", 31], ["北京", 30], ["江苏", 26], ["广西", 26], ["湖南", 23], ["四川", 21], ["上海", 20], ["天津", 16], ["安徽", 14], ["黑龙江", 13], ["陕西", 11], ["湖北", 8], ["江西", 5], ["云南", 3], ["吉林", 3], ["山西", 3], ["贵州", 2], ["辽宁", 2], ["甘肃", 1], ["内蒙古", 1], ["重庆", 1], ["香港", 1]]


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [转] 常用的正则表达式全面总结
  • GTK+(2)--窗口中添加五脏六腑
  • 【Android】Android自定义View和组合控件
  • sqlServer将多字段设为主键方法
  • UITableView多选全选
  • 简述WebService与.NET Remoting的区别及适应场合 WCF
  • C#为工作Sql而产生的字符串分割小工具(很实用,你值得拥有)
  • mongodb安装-配置文件
  • 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十六:VGA模块
  • 开源收藏
  • MDT 2013 从入门到精通之磁盘分区调整
  • High Quality Coding
  • 精心收集的必须熟悉的vim快捷键操作
  • Game publishing request was abnormally terminated (ID 27492).
  • iOS8推送消息的回复处理速度
  • 345-反转字符串中的元音字母
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • axios 和 cookie 的那些事
  • iOS 系统授权开发
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript实现分页效果
  • js 实现textarea输入字数提示
  • PHP那些事儿
  • Redash本地开发环境搭建
  • SpriteKit 技巧之添加背景图片
  • 记录一下第一次使用npm
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 删除表内多余的重复数据
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 新手搭建网站的主要流程
  • 再谈express与koa的对比
  • 正则学习笔记
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ![CDATA[ ]] 是什么东东
  • #define用法
  • #vue3 实现前端下载excel文件模板功能
  • (02)Hive SQL编译成MapReduce任务的过程
  • (9)STL算法之逆转旋转
  • (pojstep1.3.1)1017(构造法模拟)
  • (ros//EnvironmentVariables)ros环境变量
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二)hibernate配置管理
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。