python 导出数据并发邮件_Python 获取zabbix数据图并发邮件

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 MIMEText  # 导入MIMEText类

from email.mime.p_w_picpath import MIMEImage  # 导入MIMEImage类

screens = ["NGINX_flow","mysql"]

now_date = time.strftime("%Y-%m-%d")

save_graph_path = "./weeks/%s" % time.strftime("%Y-%m-%d")

if not os.path.exists(save_graph_path):

os.makedirs(save_graph_path)

zabbix_host = "zbx.XXXX.com"

username = "Admin"

password = "XXXX&zabbix"

width = 750

height = 200

# graph Time period, s

period = 604800

# zabbix DB

dbhost = "192.168.22.22"

dbport = 3317

dbuser = "XXXX_read"

dbpasswd = "XXXX_read"

dbname = "zabbix"

def mysql_query(sql):

try:

conn = MySQLdb.connect(host=dbhost, user=dbuser, passwd=dbpasswd, port=dbport, connect_timeout=20)

conn.select_db(dbname)

cur = conn.cursor()

count = cur.execute(sql)

if count == 0:

result = 0

else:

result = cur.fetchall()

return result

cur.close()

conn.close()

except MySQLdb.Error, e:

print "mysql error:", e

def get_graph(zabbix_host, username, password, screen, width, height, period, save_graph_path):

for i in mysql_query("select screenid from screens where name='%s'" % (screen)):

for screenid in i:

graphid_list = []

for c in mysql_query("select resourceid from screens_items where screenid='%s'" % (int(screenid))):

for d in c:

graphid_list.append(int(d))

for graphid in graphid_list:

login_opt = urllib.urlencode({

"name": username,

"password": password,

"autologin": 1,

"enter": "Sign in"})

get_graph_opt = urllib.urlencode({

"graphid": graphid,

"screenid": screenid,

"width": width,

"height": height,

"period": period})

cj = cookielib.CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

login_url = r"http://%s/index.php" % zabbix_host

save_graph_url = r"http://%s/chart2.php" % zabbix_host

opener.open(login_url, login_opt).read()

data = opener.open(save_graph_url, get_graph_opt).read()

filename = "%s/%s_%s.png" % (save_graph_path, screenid, graphid)

f = open(filename, "wb")

f.write(data)

f.close()

class SendHtmlMail(object):

def __init__(self):

self.HOST = "smtp.exmail.qq.com"

self.SUBJECT = u"每周官网流量数据报表"

self.TO = ['xxxx@XXXX.com','XXXX_script@XXXX.com']

self.FROM = "XXXX_script@XXXX.com"

def addimg(self,src, imgid):

fp = open(src, 'rb')

msgImage = MIMEImage(fp.read())

fp.close()

msgImage.add_header('Content-ID', imgid)

return msgImage

def Send(self):

msg = MIMEMultipart('related')

msgtext = MIMEText("""

                        

 网贷之家周流量报告(责任人:gaogd) 
官方流量报告 更多>>

""", "html", "utf-8")

msg.attach(msgtext)

msg.attach(self.addimg("./weeks/%s/36_1904.png"%now_date, "no"))

msg.attach(self.addimg("./weeks/%s/36_1917.png"%now_date, "www"))

msg.attach(self.addimg("./weeks/%s/36_1928.png"%now_date, "bbs"))

msg['Subject'] = self.SUBJECT

msg['From'] = self.FROM

msg['To'] = ",".join(self.TO)

print msg['To']

try:

server = smtplib.SMTP()  # 创建一个SMTP()对象

server.connect(self.HOST, "25")  # 通过connect方法连接smtp主机

server.starttls()  # 启动安全传输模式

server.login("XXXX_script@XXXX.com", "XXXXX@*aX")  # 邮箱账号登录校验

server.sendmail(msg['From'], self.TO, msg.as_string())  # 邮件发送

server.quit()  # 断开smtp连接

print "邮件发送成功!"

except Exception, e:

print "失败:" + str(e)

if __name__ == '__main__':

print 'start:: ',datetime.datetime.now()

now_date = datetime.datetime.now().strftime("%Y-%m-%d")

for screen in screens:

get_graph(zabbix_host, username, password, screen, width, height, period, save_graph_path)

send_obj = SendHtmlMail()

send_obj.Send()

print 'stop:: ', datetime.datetime.now()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值