將zabbix 監控圖以圖片格式發送郵件到管理員郵箱
1.cd /home/
vim zabbix_send_mail.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
# https://www.cnblogs.com/hoods/p/6413330.html
# https://blog.csdn.net/xiegh2014/article/details/76572556
# https://www.runoob.com/python/python-email.html
# 感謝上麵三位仁兄的源碼。
# 各取一半一半,揉合之。
# 能達到獲取圖片與發送郵件的效果。
# 略粗糙,僅參考。
# 2017-10-24
#
import HTMLParser
import urlparse
import urllib
import urllib2
import cookielib
import string
import os
import smtplib
import datetime
import cookielib, urllib2, urllib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
host = "192.168.31.131"
smtpserver = 'smtp.aliyun.com'
mail_username = 'user1@aliyun.com'
mail_password = 'redhat'
receiver = 'user2@aliyun.com'
#receiver = ['user3@aliyun.com', 'user4@aliyun.com'] # 如需多個收到郵件
Subject = Header('測試','utf-8')
# 圖片頁麵
hosturl = "https://192.168.31.131/chart2.php?graphid=796&period=3600"
# post數據接收和處理的頁麵(我們要向這個頁麵發送我們構造的Post數據)
posturl = "https://192.168.31.131/index.php"
# 設置一個cookie處理器,它負責從服務器下載cookie到本地,並且在發送請求時帶上本地的cookie
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
# 打開圖片頁麵(他的目的是從頁麵下載cookie,這樣我們在再送post數據時就有cookie了,否則發送不成功)
h = urllib2.urlopen(hosturl)
# 構造header,一般header至少要包含一下兩項。
# 抓包得到。
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Referer': 'https://192.168.31.131/zabbix.php?action=dashboard.view'}
# 構造Post數據。
# 抓包得到。
postData = {
'name': 'Admin', # 用戶名
'password': 'zabbix', # 密碼
'autologin': 1,
'enter': 'Sign in'
}
# 需要給Post數據編碼
postData = urllib.urlencode(postData)
# 通過urllib2提供的request方法來向指定Url發送我們構造的數據,並完成登錄過程
request = urllib2.Request(posturl, postData, headers)
response = urllib2.urlopen(request)
text = response.read()
def get_graph(host, graphid, period, image_name):
path = "/tmp/test/"
#zabbix的圖片的地址的構造
url = "https://%s/chart2.php?graphid=%s&period=%s" % (host, graphid, period)
img_req = urllib2.Request(url)
png = urllib2.urlopen(img_req).read()
file = path + image_name + '.png'
with open(file,'wb') as f:
f.write(png)
def SendMail(receiver, Subject, smtpserver, mail_username, mail_password):
msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = Subject
msgRoot['From'] = ("%s<youyou12@aliyun.com>") % (Header('testt!!!', 'utf-8'),)
sendText = '<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>'
msgText = MIMEText(sendText, 'html', 'utf-8')
msgRoot.attach(msgText)
fp = open('/tmp/test/cpu_load.png', 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage)
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(mail_username, mail_password)
smtp.sendmail(mail_username, receiver, msgRoot.as_string())
smtp.quit()
get_graph(host, 796, 3600, 'cpu_load')
SendMail(receiver, Subject, smtpserver, mail_username, mail_password)
2.mkdir /tmp/test/
3.python zabbix_send_mail.py
4.ls /tmp/test/ # 圖片獲取成功
cpu_load.png
5.查看郵件 # 成功收到郵件

最後更新:2017-10-24 19:34:01