#/usr/bin/env python
# -*- coding: utf-8 -*- 
import time,datetime,socket,urllib,urllib2,cookielib,re
import smtplib,string
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.p_w_picpath import MIMEImage
log_url='http://ip地址/cacti/'
HOST ="smtp.139.com" #定义smtp主机
SUBJECT = "locik周报" #定义邮件主题
TO = "[email protected],[email protected]" #定义邮件收件人
TO_list = TO.split(",")
s_TO = string.splitfields(TO,",")
FROM = "[email protected]" #定义邮件发件人
def Time_Shifting():
    threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 11)) 
    otherStyleTime = threeDayAgo.strftime("%Y-%m-%d %H:%M:%S") 
    format_otherStyleTime = "%s 00:00:00" % otherStyleTime.split()[0]
    global start
    start=time.mktime(time.strptime(format_otherStyleTime,'%Y-%m-%d %H:%M:%S'))
    threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days = 5))
    otherStyleTime = threeDayAgo.strftime("%Y-%m-%d %H:%M:%S")
    result = "%s 00:00:00" % otherStyleTime.split()[0]
    global end
    end=time.mktime(time.strptime(result,'%Y-%m-%d %H:%M:%S'))
    return start,end

def Login():
    cj = cookielib.CookieJar()
    global opener
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    login_data = urllib.urlencode( {'action':'login','login_username':'用户名','login_password':'密码' })
    page = opener.open(log_url,data = login_data )
    html = page.read()
    if re.findall("graphs_new.php",html):
        print "ok"
    else:
        print "eerr"
    page.close()

def list_url_186():
    global list_186
    list_186 = ["http://ip地址/cacti/graph_p_w_picpath.php?local_graph_id=78&rra_id=0&view_type=tree&graph_start=%s&graph_end=%s"%(int(start),int(end)),
"http://ip地址/cacti/graph_p_w_picpath.php?local_graph_id=30&rra_id=0&view_type=tree&graph_start=%s&graph_end=%s" %(int(start),int(end)),
"http://ip地址/cacti/graph_p_w_picpath.php?local_graph_id=31&rra_id=0&view_type=tree&graph_start=%s&graph_end=%s" %(int(start),int(end)),
"http://ip地址/cacti/graph_p_w_picpath.php?local_graph_id=29&rra_id=0&view_type=tree&graph_start=%s&graph_end=%s" %(int(start),int(end)),
]

def Get_Image():
    count=0
    for url in list_186:
        print url
        count+=1
        img=opener.open(url)
        print count
        if count == 1:
            file_object = open('img/186-1week-disk.png','wb')
            file_object.write(img.read())
        elif count == 2:
            file_object = open('img/186-1week-CpuLoad.png','wb')
            file_object.write(img.read())
        elif count == 3:
            file_object = open('img/186-1week-Network.png','wb')
            file_object.write(img.read())
        elif count == 4:
            file_object = open('img/186-1week-Memory.png','wb')
            file_object.write(img.read())

def addimg(src,imgid): #添加图片函数,参数1:图片路径,参数2:图片ID
    fp = open(src,'rb') #打开文件
    msgImage = MIMEImage(fp.read()) #创建MIMEImage对象,读取图片内容并作为参数
    fp.close() #关闭文件
    msgImage.add_header('Content-ID',imgid) #指定图片文件的Content-ID,标签src用到
    return msgImage #返回msgImage对象

def sendmail():
    msg = MIMEMultipart('related') #创建MIMEMultipart对象,采用related定义内嵌资源的邮件体
    msgtext = MIMEText("""
    
    
    以下是ip地址系统状态图
    
    
    
    
    
    
    
    
    
    
    
    ""","html","utf-8") #标签的src属性是通过Content-ID来引用的

    msg.attach(msgtext) #MIMEMultipart对象附加MIMEText的内容
    msg.attach(addimg("img/186-1week-Network.png","network")) #使用MIMEMultipart对象附加MIMEImage的内容
    msg.attach(addimg("img/186-1week-CpuLoad.png","load"))
    msg.attach(addimg("img/186-1week-Memory.png","mem"))
    msg.attach(addimg("img/186-1week-disk.png","disk"))

    msg['Subject'] = SUBJECT
    msg['FROM']=FROM
    msg['To'] = TO
    try:
        server = smtplib.SMTP()
        server.connect(HOST,"25")
        server.starttls()
        server.login('[email protected]','密码')
        server.sendmail(FROM,TO_list,msg.as_string())
        server.quit()
        print "邮件发送成功!"
    except Exception,e:
        print "失败:"+ str(e)
    print type(TO)

def main():
    Time_Shifting()
    Login()
    list_url_186()   
    Get_Image()
    sendmail()
if __name__ == '__main__':
    main()