Cacti 自动报表实现

需求:

1、取cacti的图时不需要登陆(只对可访问用户开放),但其它操作时需要登陆。

2、每天早上把报表发送到指定邮件

需求1:

file:/cacti/graph_image.php

//include("./include/auth.php");
include("./include/global.php");

品茶:首先去掉验证模块,发现少了涵数,再去auth.php里看,发现此涵数是在./include/global.php中,载入此文件后问题得到解决。

需求2:首先需要连接邮件,down图,并把图发送到收件中。最后做成一个定时任务。

/code/cacti_report/downimage.py
#/usr/bin/python
import requests,sys
def DownImage(url,filename):
    r = requests.get(url)
    try:
        ImageFile = open(filename,‘w‘)
        ImageFile.write(r.content)
        ImageFile.close()
        return (0,"Success")
    except:
    	return (1,"Write imagefile Error!")
/code/cacti_report/send_cacti.py
#!/usr/bin/env python
#coding: utf-8
import smtplib,time
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from downimage import DownImage

ltime = time.strftime(‘%Y-%m-%d %H:%M‘,time.localtime(time.time()))
sender = ‘发件人‘
receiver = ‘收件人‘

subject = ltime + "\tNginx状态图,100段网络流量图,200段网络流量图的报表"
smtpserver = ‘smtp.163.com‘
username = ‘163帐户‘
password = ‘163密码‘
msgRoot = MIMEMultipart(‘related‘)
msgRoot[‘Subject‘] = subject
msgRoot[‘To‘] = "收件人"

NginxImage = "/code/cacti_report/image/nginx1.png"
t100 = "/code/cacti_report/image/t100.png"
t200 = "/code/cacti_report/image/t200.png"

#download image
out = DownImage("http://www.cacti.com/cacti/graph_image.php?action=view&local_graph_id=6",NginxImage)
out2 = DownImage("http://www.cacti.com/cacti/graph_image.php?local_graph_id=51",t100)
out3 = DownImage("http://www.cacti.com/cacti/graph_image.php?local_graph_id=196",t200)

#define email conent
msgText = MIMEText(‘<b>报表(昨天 8:00 - 今天 8:00):</b><br>Nginx状态图:<br><img src="cid:webxxxload8"><br>									100段网络流量图:<br><img src="cid:switch100"><br>									200段网络流量图:<br><img src="cid:switch200"><br>‘,‘html‘,‘utf-8‘)
#add email conent to msgRoot
msgRoot.attach(msgText)

#webxxx load 8 nginx static
msgImage = MIMEImage(open(NginxImage, ‘rb‘).read())
msgImage.add_header(‘Content-ID‘, ‘<webxxxload8>‘)
msgRoot.attach(msgImage)

#switch 100 range traffic
msgImage = MIMEImage(open(t100, ‘rb‘).read())
msgImage.add_header(‘Content-ID‘, ‘<switch100>‘)
msgRoot.attach(msgImage)

#switch 10048 range traffic
msgImage = MIMEImage(open(t200, ‘rb‘).read())
msgImage.add_header(‘Content-ID‘, ‘<switch200>‘)
msgRoot.attach(msgImage)

#Send mail
smtp = smtplib.SMTP()
smtp.connect(smtpserver)
smtp.login(username, password)
smtp.sendmail(sender, receiver, msgRoot.as_string())
smtp.quit()

定时任务:

# crontab -l
0 8 * * * /code/cacti_report/send_cacti.py

品茶:记得需要一个image文件夹,这样每天早上8点记得收信看报表,结果可能是这样子的。

品茶:是不是觉着特别高大上!

Cacti 自动报表实现,布布扣,bubuko.com

时间: 2024-08-09 10:34:51

Cacti 自动报表实现的相关文章

自动报表

摘要 python实现的几个业务部门常用的周报表,用pyinstaller打包成独立的exe文件,添加到windows任务计划,每周的第一天上班前打印出周报表. 构件图 to be continue...

Cacti 每日导出图形及流量报表

Cacti每日流量及图形导出以前做过一个VBS脚本,大概300多行,使用的是浏览器模拟打开Cacti网站用VBS模拟鼠标键盘操作进行自动导出及保存的.但是效率非常低,而且会因为浏览器升级及其他原因导致自动导出失败. 最近重新整理了一个思路,使用VBS 的download函数进行下载.参考了 煮酒品茶的文章Cacti 自动报表实现 使用VBS定义download函数,然后下载需要的报表到临时目录,然后使用VBS脚本移动到按日期命名的文件夹中. 最后实现的效果图如图: 首先:编辑VBS脚本: 1.使

可重复分组报表

可重复分组报表也在报表开发中比较常见和麻烦的任务.可重复分组报表是指同一记录出现在不同的分组中被重复统计,常见的可重复分组报表有两类:一类是分组区间有交集,如:统计年龄段在20-30岁.25-35岁.30-40岁之间的用户数量:另外一类是分组区间有包含关系,如:统计各地区以及该地区主要城市的汇总数据,"华北,其中北京:华东,其中上海--". 这类报表通过报表工具往往不易实现,即使实现也经常会伴随着报表难于开发维护.性能不高等问题. 通过集算器可以很好解决这个问题,这里通过两个例子来说明

01-智能运维简介

要想了解智能运维,首先需要知道几点: 运维是什么? 运维干什么? 为什么重视运维? 运维是什么? 要说运维,我先说说目前中国互联网的发展. 中国互联网的发展 第一阶段: 新浪.搜狐.网易等门户网站,解决了新闻信息的传播问题 第二阶段: 腾讯.阿里.百度等科技型,解决了社交.信息获取及电商等需求问题 第三阶段: 需要解决心理需求问题,直播.短视频.综艺.电视剧等 第四阶段: 区块链.自动驾驶.智能机器人等 我自己心里认为,运维的水平可以成为衡量一个公司(IT公司)技术实力的标准.(因为不管是系统还

给某单位的远程接入动态密码认证 建设方案

目         录 一.       远程接入身份认证应用概述.... 3 2.1         远程接入身份认证应用现状... 3 2.2         双因素认证方案建设意见... 3 2.3         认证双因素基本原理... 5 二.       身份认证解决方案.... 5 3.1         动联身份认证系统介绍... 6 3.1.1          认证服务... 7 3.1.2          管理中心... 9 3.1.3          动码令. 12

mysql/sqlserver/oracle

1. ORACLE oracle 能在所有主流平台上运行(包括 windows).完全支持所有的工业标准.采用完全开放策略.可以使客户选择最适合的解决方案.对开发商全力支 持.oracle并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案.如果 windowsNT不能满足需要,用户可以把数据库移到UNIX中.Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度. oracle获得最高认证级别的ISO标准认证.oracl

SQL Server 、 Oracle 以及 MySQL 有哪些区别?

SQL,在这里我理解成SQL Server.三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性.排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相似,就不赘述了. 如果要说明三者的区别,首先就要从历史入手. Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去.开始创业时只有1200美元,却使得Oracle公司连

kettle转换提高性能拆分转换步骤_20161201

今天是12月1号,前期用kettle做了月报自动报表的转换和作业,今天运行时候发现一个报表的程序跑起来失败,心里很纳闷,上过月刚跑的没问题,怎么会无缘无故的失败. 通过看kettle运行日志,发现一个错误,c盘left no space 也就是在系统盘上没有足够的空间存储临时表,这时候才考虑到可能是在转换的步骤里设置的步骤过多,有很多个表输入, 由于kettle输出执行顺序是自上而下,但是输入是无序的,在很多步骤同时输入的时候就会占用很大的内存,性能就会很慢. 打开那个出问题的kettle转换文

数据库学习之--Oracle 架构与MySQL架构对比

数据库学习之--Oracle 架构与MySQL架构对比 一.Oracle .MySQL应用对比 如果要说明三者的区别,首先就要从历史入手. Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去.开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番. Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A