设为首页 收藏本站
查看: 1187|回复: 0

[经验分享] python登录cacti抓取服务信息图自动发周报

[复制链接]

尚未签到

发表于 2019-1-10 07:38:26 | 显示全部楼层 |阅读模式
#/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.image import MIMEImage
log_url='http://ip地址/cacti/'
HOST ="smtp.139.com" #定义smtp主机
SUBJECT = "locik周报" #定义邮件主题
TO = "11111111@qq.com,111111111@qq.com" #定义邮件收件人
TO_list = TO.split(",")
s_TO = string.splitfields(TO,",")
FROM = "1111111@139.com" #定义邮件发件人
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_image.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_image.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_image.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_image.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('11111111@139.com','密码')
        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()  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-661368-1-1.html 上篇帖子: Cacti 搭建详解 下篇帖子: Nagios,Cacti 解决故障注意事项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表