megnlingling 发表于 2018-11-16 13:38:56

python分析nginx日志的ip,url,status

#!/usr/bin/env python  
#_*_coding:utf-8 _*_
  
__author__ = 'lvnian'
  

  
#!/usr/bin env python
  
# coding: utf-8
  
import MySQLdb as mysql
  
import sys, os,time
  
import datetime
  

  
addtime = datetime.datetime.now()
  
db = mysql.connect(user="root",passwd="xxxx@2015",db="intest",host="192.168.10.12") #数据库连接信息
  
db.autocommit(True)
  
cur = db.cursor()
  
cur.execute('set names utf8')
  

  
dict_list = {}
  
with open('access.log') as logfin:
  
    for line in logfin:
  
      arr = line.split(' ')
  
      # 获取ip url 和status
  
      ip = arr
  
      url = arr
  
      status = arr
  
      # ip url 和status当key,每次统计+1
  
      dict_list[(ip,url,status)] = dict_list.get((ip,url,status),0)+1
  
    # 转换成列表
  
    ip_list = [(k,k,k,v,addtime) for k,v in dict_list.items()]
  
    # 按照统计数量排序,排序后保存到数据库。
  
    for insert in sorted(ip_list,key=lambda x:x,reverse=True):#如果只想提取前十行的话可以[:10]即可。
  
      print insert#测试用的,可以不要。整个功能是输出一行,然后保存到数据库。
  
      sql = 'insert loginfo values ("%s","%s","%s","%s","%s")' % insert
  
      print sql
  
      cur.execute(sql)
  

  
#到数据库输出查询如下123.125.160.217 这个ip经常乱***别的服务器曝光一下,如见此ip访问log,请直接拨打911


页: [1]
查看完整版本: python分析nginx日志的ip,url,status