# -*- coding: utf8 -*-
'''
@author: zhiming www.503error.com
'''
import urllib2
import urllib
import cookielib
import hashlib
import re
import time
from rhsm.certificate import Content
import smtplib
from os.path import basename
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
import os
class ZABBIX:
def __init__(self):
self.usercode = ""
self.userid = ""
self.cj = cookielib.LWPCookieJar();
self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj));
urllib2.install_opener(self.opener);
def login(self, name, pwd,urls):
loginPostData = {
'name' : name,
'password' : pwd ,
'autologin':1 ,
'enter': 'Sign in',
'request':''
};
loginRequest = urllib2.Request('https://localhost/zabbix/index.php',urllib.urlencode(loginPostData));
loginRequest.add_header('Accept','*/*');
loginRequest.add_header('Accept-Language','zh-CN,zh;q=0.8');
loginRequest.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36');
loginRequest.add_header('Content-Type','application/x-www-form-urlencoded');
sendPost = urllib2.urlopen(loginRequest).read();
print 'start donwload'
for key,value in downloadurl.items():
print 'key',key
print 'value',value
currenttime = time.strftime("%s")
currentday = time.strftime("%y%m%d")
if os.path.exists(key+currentday+".png"):
print 'already donwload ,ignore'
else:
print 'start download :',key
try:
f = urllib2.urlopen(value,timeout=60)
data = f.read()
#print 'the data is %s'% data
with open(key+currentday+'.png', "wb") as code:
code.write(data)
print 'done the download'
except Exception,e:
print e
def sendtocus(self,send_from, send_to, subject, text, files=None,
server="127.0.0.1"):
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = send_to
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach(MIMEText(text))
for f in files or []:
with open(f, "rb") as fil:
part = MIMEApplication(
fil.read(),
Name=basename(f)
)
part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
msg.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(send_from, send_to, msg.as_string())
smtp.close()
if __name__ == "__main__":
test = ZABBIX()
downloadurl={"master-cpu":"https://localhost/zabbix/chart.php?sid=c6eaf2cf103&period=604800&stime=20180811034616&itemids%5B0%5D=2187887&itemids%5B1%5D=2188075&itemids%5B2%5D=2188263&type=1&batch=1&updateProfile=0&profileIdx=&profileIdx2=&width=1136&screenid=&curtime=1472111226924",
"master-mem":"https://localhost/zabbix/chart.php?sid=c6eaff103&period=604800&stime=20180811034616&itemids%5B0%5D=2187887&itemids%5B1%5D=2188075&itemids%5B2%5D=2188263&type=1&batch=1&updateProfile=0&profileIdx=&profileIdx2=&width=1136&screenid=&curtime=1472111226924"
}
test.login('maple_m', '****your password***',downloadurl)
files = []
todaydate = time.strftime("%y%m%d")
for key,value in downloadurl.items():
files.append(key+todaydate+".png")
print 'start send email'
content_of_email = """
Hi
this is the report of this week
thanks
OpenShift Online Operation
"""
test.sendtocus("maple_m@hotmail.com", "maple_m@hotmail.com", "Weekly report of "+todaydate, content_of_email, files)