最近在学习python,写了个脚本分析nginx日志,练练手。写得比较粗糙,但基本功能可以实现。

脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱。

实现前两项功能的脚本内容如下:

#!/usr/bin/env python

# coding:utf-8

# date:2015-12-10

# author:eivll0m

import urllib

import json

url = 'http://ip.taobao.com/service/getIpInfo.php?ip='

def ip_find(ip):

data = urllib.urlopen(url + ip).read()

datadict = json.loads(data)

for oneinfo in datadict:

if 'code' == oneinfo:

if datadict[oneinfo] == 0:

return datadict['data']['country'] + datadict['data']['region'] + datadict['data']['city'] + '\t' + datadict['data']['isp']

def sort_value(s):

d = sorted(s.iteritems(),key=lambda t:t[1],reverse=True)

return d

if __name__ == '__main__':

with open('access.log') as f:

d = {}

for line in f:

field = line.split()

if field[0] not in d:

d.setdefault(field[0],[])

d[field[0]].append(field[0])

s = {}

for k in d:

s[k] = len(d[k])

s = sort_value(s)[0:10]

print '访问IP\t\t\t访问次数\t\tIP来源'

print '----------------------------------------------------------------------------'

for ip,con in s:

print str(ip) + '\t\t' + str(con) + '\t\t' + ip_find(ip)

执行效果如下:

加入发送邮件功能,最终版本:

#!/usr/bin/env python

# coding:utf-8

# date:2015-12-10

# author:eivll0m

import urllib

import json

import time

from email import encoders

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr, formataddr

import smtplib

url = 'http://ip.taobao.com/service/getIpInfo.php?ip='

def ip_find(ip):

data = urllib.urlopen(url + ip).read()

datadict = json.loads(data)

for oneinfo in datadict:

if 'code' == oneinfo:

if datadict[oneinfo] == 0:

return datadict['data']['country'] + datadict['data']['region'] + datadict['data']['city'] + '\t' + datadict['data']['isp']

def sort_value(s):

d = sorted(s.iteritems(),key=lambda t:t[1],reverse=True)

return d

def _format_addr(s):

name, addr = parseaddr(s)

return formataddr(( \

Header(name, 'utf-8').encode(), \

addr.encode('utf-8') if isinstance(addr, unicode) else addr))

if __name__ == '__main__':

date_time = time.strftime('%Y-%m-%d %H:%M:%S')

from_addr = 'xxxxxx@163.com'

password = 'uoodfdnddaeqjq'

to_addr = 'xxxxxxx@qq.com'

smtp_server = 'smtp.163.com'

with open('access.log') as f:

d = {}

for line in f:

field = line.split()

if field[0] not in d:

d.setdefault(field[0],[])

d[field[0]].append(field[0])

s = {}

for k in d:

s[k] = len(d[k])

s = sort_value(s)[0:10]

text = date_time + '\n'

text = text + '\n' + u'访问IP\t\t\t访问次数\t\tIP来源'

text = text + '\n' + '----------------------------------------------------------------------------'

for ip,con in s:

text = text + '\n' + str(ip) + '\t\t' + str(con) + '\t\t' + ip_find(ip)

text = text + '\n' '----------------------------------------------------------------------------'

msg = MIMEText(text, 'plain', 'utf-8')

msg['From'] = _format_addr(u'监控 ' % from_addr)

msg['To'] = _format_addr(u'管理员 ' % to_addr)

msg['Subject'] = Header(u'Nginx日志分析……', 'utf-8').encode()

server = smtplib.SMTP(smtp_server, 25)

server.set_debuglevel(1)

server.login(from_addr, password)

server.sendmail(from_addr, [to_addr], msg.as_string())

server.quit()

执行脚本后收到邮件:

python分析nginx日志_利用python分析nginx日志相关推荐

  1. python分析每月销售数据_利用Python进行某单品销售数据分析

    本篇文章将利用Python工具对一份某商品的销售数据进行如下几个方面的分析,结合业务场景,构件常用业务指标,以从销售数据中挖掘出其潜在的商业价值,促进运营.用户消费趋势分析: 用户个体消费分析: 用户 ...

  2. python和excel数据分析_利用Python处理和分析Excel表中数据实战

    作为一个学习用Python进行数据分析的新手来说,通过本文来记录分享一些我在用Python中的pandas.numpy来分析Excel表中数据的数据清洗和整理的工作,目的是熟悉numpy以及panda ...

  3. python分析保险销售数据_利用python进行保险数据分析及可视化

    前言 现在数据分析在各个行业都在广泛的使用,尤其由于python语言的简便.高效性,在一些中小型企业的实际应用中逐渐替代excel公式.透视图等传统方式.网上各种博客论坛这类文章很多,但保险行业的数据 ...

  4. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

  5. python异常值处理实例_利用Python进行异常值分析实例代码

    前言 异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值.常用检测方法3σ原则和箱型图.其中,3σ原则只适用服从正态分布的数据.在3σ原则下,异常值被定义为观察值和平均值的偏差超过3倍 ...

  6. python删除异常值代码_利用Python进行异常值分析实例代码

    前言 异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值.常用检测方法3σ原则和箱型图.其中,3σ原则只适用服从正态分布的数据.在3σ原则下,异常值被定义为观察值和平均值的偏差超过3倍 ...

  7. 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...

    前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...

  8. python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)

    抱歉,对长沙房地产数据的挖掘与分析[三],想了蛮久,觉得对自己的分析结果不是很理想.等我完善好了,我再发出来吧.今天继续开启新的一专题.主要讲解如何用PYTHON实现简单的桌面软件的制作. 题外话,我 ...

  9. python itchat 无法登录_利用python实现在微信群刷屏的方法

    hello,我是小小炽,这是我写的第一篇博客,写博客一直都想在写,但是苦于能力尚浅,在各位大牛面前那既然是关公面前耍大刀了,但是其实想来每一个大牛不也是从一个小白慢慢进步学习从而达到一定的高度的吗,而 ...

  10. 利用python进行数据分析 笔记_利用python进行数据分析--(阅读笔记一)

    原博文 2016-06-17 23:21 − 以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频 ...

最新文章

  1. JNI与底层调用-1
  2. 2017 实习面试问题总结(阿里、头条、美团、cvte、乐视、华为)
  3. 形成20位存储单元的物理地址
  4. 2020 年 3 月全国程序员工资排名!
  5. 23种设计模式(十七)状态变化之状态模式
  6. 充分统计量(Sufficient Statistics)
  7. JXTA第一步:HelloWorld
  8. matlab 读取 Microsoft Excel 电子表格文件不推荐使用 xlsread
  9. zabbix如何网站监控web
  10. 优锘科技:森数据初体验
  11. npm init vite@latest 报错
  12. 屏幕旋转后字体会变大问题
  13. 武汉科技大学计算机科学与技术分数,2019武汉科技大学研究生分数线汇总(含2016-2019历年复试)...
  14. 什么是服务器?服务器有哪几种类型?
  15. 华为解锁密码忘了怎么办用计算机,不记得手机锁屏密码怎么办_华为手机密码忘了的解决方法-系统城...
  16. windows server 2012 r2 搭建企业文件共享存储
  17. 05-SA8155 QNX Hypervisor 之 Pass-through直通模式
  18. 恢复计算机到手机桌面,桌面的图标怎么恢复原来的呀?
  19. 从零搭建FPGA区块链运算机——ASIC、GPU、FPGA对比
  20. JAVA SE知识整合(暂时完结 五万七字)后续分点详解

热门文章

  1. VS 2008 和 .NET 3.5 Beta 2 发布了
  2. 2008已经到来,我们怎能原地踏步!
  3. 分析 js构造函数:对象方法 、类方法 、原型方法
  4. 读书笔记--Python基础教程 001
  5. 从命令行接收多个数字,求和之后输出结果
  6. Android--List与ArrayList区别(转)
  7. OpenGL之路(六)贴图
  8. Comet服务器推送与SignalR
  9. 获取 Transaction Source
  10. 完美解决header,footer等HTML5标签在IE(IE6/IE7/IE8)无效的方法