1. 程式人生 > >數據統計並發郵件腳本

數據統計並發郵件腳本

python

#!/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


數據統計並發郵件腳本