数据统计并发邮件脚本

#!/usr/bin/env python2
#-*- coding:utf-8 -*-
#Author : zhanglejie
#Time: 2017/05/18

‘‘‘
生成wifi数据最近7天(不含当天)回传列表:天数,MAC
判断依据:数据回传后会创建相应的文件,文件名包含mac和时间(以天为分界),
获取文件名,提取出mac和时间,从而知道mac哪天有数据回传哪天没有

‘‘‘

import os
import datetime
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib

#定义生成器,获取最近7天
def days7():
    #获取当天时间
    now = datetime.datetime.now()
    yield now - datetime.timedelta(1)
    yield now - datetime.timedelta(2)
    yield now - datetime.timedelta(3)
    yield now - datetime.timedelta(4)
    yield now - datetime.timedelta(5)
    yield now - datetime.timedelta(6)
    yield now - datetime.timedelta(7)

#定义邮件发送
def sendmail(filename,email):
    #创建一个带附件的实例
    msg = MIMEMultipart()

    #构造附件1
    att1 = MIMEText(open(filename, ‘rb‘).read(), ‘base64‘, ‘utf8‘)
    att1["Content-Type"] = ‘application/octet-stream‘
    att1["Content-Disposition"] = ‘attachment; filename=‘ + filename
    msg.attach(att1)
    #邮件内容
    att2 = MIMEText("wifi数据回传检查\n",_subtype=‘plain‘,_charset=‘utf8‘)  
    msg.attach(att2)

    #加邮件头
    msg[‘to‘] = email
    msg[‘from‘] = ‘[email protected]‘
    msg[‘subject‘] = ‘wifi data check‘
    #发送邮件
    try:
        server = smtplib.SMTP()
        server.connect(‘smtp.263.net‘)
        #XXX为用户名,XXXXX为密码
        server.login(‘my email address‘,‘testtest‘)
        server.sendmail(msg[‘from‘], msg[‘to‘],msg.as_string())
        server.quit()
        print ‘发送成功‘
    except Exception,e:
        print str(e)

#输入收件地址
email_name = raw_input("Please input your Email: ")
print "######Running......"

#获取文件名,并去重
con = set()
for d in days7():
    day = datetime.datetime.strftime(d,"%Y%m%d")   #格式化时间,从时间格式转换成字符串
    file_dir = os.popen("salt \"log*\" cmd.run ‘ls  /home/survey_static/wifi/log/"+ day +"/* \‘|grep survey_static|awk -F \"/|_\" \‘$9 != \"\" {print $9\"_\"$7}\‘")
    for content in file_dir.readlines():
        con.add(content.strip())

#拆分文件名,计算天数并保存到文件
con_list =  list(con)
mac_all = []
macs = set()
##获取mac,并去重
for i in con_list:
    mac_tmp = i.split("_")[0].replace(":","")
    mac_all.append(mac_tmp)
    macs.add(mac_tmp)

##计算天数,并保存到文件
file_name = "macs.csv"
file_mac = open(file_name,"w")
for m in list(macs):
    file_mac.write(str(mac_all.count(m)) + "," + m + "\n")
file_mac.close()

#发送邮件
sendmail(file_name,email_name)

#原始日志举例:
#/home/survey_static/wifi/log/20170504/data_78:a3:51:17:f5:bc_20170504.log
#/home/survey_static/wifi/log/20170504/data_78:a3:51:15:38:c4_20170504.log
#/home/survey_static/wifi/log/20170504/data_78:a3:51:17:f5:b8_20170504.log

#处理后数据举例:
#  7,78a3511802d8
#  7,78a35117ff18
#  7,78a3511802d4
#  7,78a35117fe84
#  2,78a3511802dc
#  7,78a35117fe88
#  7,78a351180298
#  7,78a351180218
#  1,78a35117f810
#  7,78a35117f8e0
时间: 2024-10-10 18:29:21

数据统计并发邮件脚本的相关文章

Python 获取zabbix数据图并发邮件

#! /usr/bin/env python # coding=utf-8 # Andy_f import time, os,datetime import urllib import urllib2 import cookielib import MySQLdb import smtplib from email.mime.multipart import MIMEMultipart  # 导入MIMEMultipart类 from email.mime.text import MIMETex

shell脚本监控分区使用率,并发邮件报警

最近线上一个分区使用过快,nagios并没有开启对分区使用率的监控,抽了几分钟临时写了个脚本先用着.用法比较简单,直接上代码: 注:代码中用到的sendEmail脚本是perl开发的一个发邮件程序,可以网上找到该脚本或者使用其他发邮件脚本 #!/bin/bash #--dir:Monitoring of the mount point #--critical:critical value #--warning:warning value  #--ip [ $# -eq 0 ] && {  

在Sqlserver下巧用行列转换日期的数据统计

在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数的基础语法,有使用Group By 或 partition by 后配合Sum,Count(*) 等用法.常应用于统计网站的PV流量.合同项目中月收入等业务场景中.在文中我分享下最近做过的统计小案例,和大家互相学习下:) 背景 合同中行项目按月收入的统计 1.业务逻辑及需求  1.1 表业务逻辑 合同是公司间互相签署的法律契约,一份合同从诞生起,就开始流转于公司的各个部门,最核心的还是盈亏的数值.盈亏是

网络遥控器数据统计0526

一.统计脚本及代码 1 #!/bin/sh 2 3 root_dir=`pwd` 4 source_file="$root_dir"/operate0526.txt 5 single_file="$root_dir"/single0526.txt 6 result_file="$root_dir"/result.txt 7 8 rm -rf $single_file 9 rm -rf $result_file 10 11 ###统计出现次数最多的

服务器nginx 用shell 统计并发

# netstat -an| grep ':80' | awk '/tcp/{a[$NF]++}END{for (i in a) print i,a[i]}' # echo "当前并发数:`netstat -ant | grep :80 | awk '{print $5}' | awk -F":" '{print $1}'| sort | uniq -c | sort -r -n | awk 'BEGIN{total=0}{total+=$1}END{print total}

用 PowerShell收集服务器日检报告,并发邮件给管理员

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 博文Powershell程序及部分描述从大向博客处转载,原文地址见下面网址 http://hubuxcg.blog.51cto.com/2559426/1604582 作为服务器管理员,日常工作包括经常检查各个服务器硬盘使用情况.内存.CPU.服务.事件日志等. 如果没有没有借助第SCOM/zabbix/Host Monitor等

Hbase在数据统计中的应用心得

1. 数据统计的需求 互联网上对于数据的统计,一个重要的应用就是对网站站点数据的统计,例如CNZZ站长统计.百度统计.Google Analytics.量子恒道统计等等. 网站站点统计工具无外乎有以下一些功能: 1)网站流量统计:包括PV.UV.IP等指标,这些统计指标可以以趋势图的形式展示出来,如最近一周.最近一个月等. 2)IP来源信息统计:记录各个来源IP下的访问PV数. 3)访问来源分析:记录访客是从哪些途径到达本网站的. 4)搜索引擎及搜索关键词分析:对于各个指定搜索引擎带来访问PV的

大数据高并发系统架构实战方案

大数据高并发系统架构实战方案(LVS负载均衡.Nginx.共享存储.海量数据.队列缓存 ) 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练.通过该课程的学习,普通的技术人员就可以快速搭建起千万级的高并发大数据网站平台,课程涉及内容包括:LVS实现负载均衡.Nginx高级配置实战.共享存储实现动态内容静态化加速实战.缓存平台安装配置使用.mysql主从复制安装配置实战等.课程二十.

Asp.net管理信息系统中数据统计功能的实现

数据统计是每个系统中必备的功能,在给领导汇报统计数据,工作中需要的进展数据时非常有用. 在我看来,一个统计的模块应该实现以下功能: 能够将常用的查询的统计结果显示出来: 显示的结果可以是表格形式,也可以是图形形式,如果是图形的话能够以多种形式显示(柱状图.折线图.饼图.雷达图.堆叠柱状图等): 统计查询的结果,点击数字或者百分比能够显示详细的数据: 能够自由组合查询条件.筛选条件.分组条件.排序等: 统计结果最好有个实时预览: 查询统计能够保存,以便下次能直接调用并显示统计查询的结果: 对于保存