Cacti图形数据自动导出脚本(二)

因业务需求

上篇文章链接

Cacti图形数据自动导出脚本(一)

在上一篇文章中写的脚本只能在每月1日下载所有的月数据的图

但是有个别图形需要每月指定日期下载

特在此将脚本进行了小修改

添加了每月下载月数据时日期的判断

要求如下:

1、本脚本会每日、每月自动下载图形树中所有的图形中的日数据和月数据

2、添加到图形树中的图形名称前面必须添加*号、也可不加,但是得更改脚本中的sql语句

3、图形名称中不能含有空格等linux中非法的文件名字符

4、需要做每月指定日期导出月数据的,需要在指定的图形名称后面加上英文括号+日期如:

流量导出1(21)

脚本在下载时会自动判断括号内日期和当前日期是否相等。是的话就进行此图形月数据的下载。否则在每月1日进行月数据的下载。

脚本内容如下

# Cacti图形数据自动导出脚本
# 本脚本通过自动查询图形树中所有的图形编号和图形名称,使用wget工具进行下载,
# 在图形树中添加图形以后,导出系统会在执行前自动查询数据库中最新的列表。
# 您要做的就是,将您需要导出的图形添加至图形树即可。
 
#使用此脚本前应首先更改Cacti图形和数据导出网页的验证模式,更改完毕后可免验证登录,有一定的风险,请慎重!
#注释掉graph_image.php和graph_xport.php文件中 [include("./include/auth.php");]行
#添加[include("./include/global.php");]
 
#使用以下命令添加crontab自动下载列表 我这里添加的是每日00:01分进行下载。添加完成后重启crond服务
#我这里将脚本文件保存在cacti文件夹中的file文件夹中,为了安全,可将脚本保存在别处,并在apache中添加虚拟目录,进行文件浏览。
# echo "01 00  * * * root  /var/www/html/file/export.sh > /dev/null 2>&1" > /etc/cron.d/export
 
# 陕西西普数据通信股份有限公司 运行与维护部
# By:Fenei  2016年1月14日
# QQ:407603129 EMAIL:[email protected]
# http://babyfenei.blog.51cto.com
 
#!/bin/bash
USERNAME="root"           #数据库用户名
PASSWORD="passwd"    #数据库密码
DBNAME="cacti"            #Cacti使用的数据库名称                              
MYSQL_CMD="mysql  -u${USERNAME} -p${PASSWORD}"
 
rm -rf /tmp/list.log      #删除旧的下载列表文件
#select replace(title_cache,‘*‘,‘‘) 此语句是去除图形标题中的*号 我的所有图形树中的图形都有*号 如果没有可将本语句改为 select title_cache,
select_db_sql="select replace(title_cache,‘*‘,‘‘),graph_tree_items.local_graph_id  
from graph_tree_items left join graph_templates_graph 
on graph_templates_graph.local_graph_id=graph_tree_items.local_graph_id 
where graph_tree_items.local_graph_id <> 0 order by ‘id‘ desc"
echo ${select_db_sql}  | ${MYSQL_CMD}  ${DBNAME}    > /tmp/list.log              #查询图形树表中的图形ID非0的数据并将结果保存至下载列表                   
                                                                                 #判断是否创建成功
if [ $? -ne 0 ]
then
 echo "select databases ${DBNAME} failed ..." >>/var/log/export/log              #数据库查询失败时将添加失败日志到日志文件中
fi
 
 
cd /var/www/html/file
#此命令为指定导出文件所在目录,可根据需求更改。如不指定的话会造成下载到root目录。
 
#创建以日期为名称的文件夹
mkdir -p $(date -d 1 +%Y/%m/%d/image/)
mkdir -p $(date -d 1 +%Y/%m/month/image)
mkdir -p $(date -d 1 +%Y/%m/%d/data)
mkdir -p $(date -d 1 +%Y/%m/month/data)
 
#Cacti网址阐述 这里必须在后面加‘/‘号 否则报错
URL="http://localhost/"
#获取当日日期  判断是否是1号
DAY=`date +%d`
 
 
#下载日流量图
 
cat /tmp/list.log | awk ‘NR>1‘ | while read name id
do
wget "${URL}graph_image.php?local_graph_id=${id}&rra_id=1" -O $(date -d 1 +%Y/%m/%d/image/)${name}.jpg
done
 
 
#下载月流量图

cat /tmp/list.log | awk ‘NR>1‘ | while read name id
do
echo "$name" | grep -q "("    
if [ $? -eq 0 ]; then													#判断下载文件名中是否包含()
day=$(echo $name|grep -Po ‘(?<=\()[^()]+(?=\))‘)						#如果()存在,则将()内的内容赋值给变量day
        if [ "$DAY" = "$day" ];then                                     #如果day也即()内的日期和当前日期一样。则下载此条数据
        wget "${URL}graph_image.php?local_graph_id=${id}&rra_id=3" -O $(date -d 1 +%Y/%m/month/image/)${name}.jpg
        fi
elif  [ "$DAY" = 01 ];then
wget "${URL}graph_image.php?local_graph_id=${id}&rra_id=3" -O $(date -d 1 +%Y/%m/month/image/)${name}.jpg
fi

done
 
 
#下载日流量数据表
 
cat /tmp/list.log | awk ‘NR>1‘ | while read name id
do
wget "${URL}graph_xport.php?local_graph_id=${id}&rra_id=1" -O $(date -d 1 +%Y/%m/%d/data/)${name}.xls
done
 
 
#下载月流量数据表

cat /tmp/list.log | awk ‘NR>1‘ | while read name id
do
echo "$name" | grep -q "("
if [ $? -eq 0 ]; then													#判断下载文件名中是否包含()
day=$(echo $name|grep -Po ‘(?<=\()[^()]+(?=\))‘)						#如果()存在,则将()内的内容赋值给变量day
        if [ "$DAY" = "$day" ];then										#如果day也即()内的日期和当前日期一样。则下载此条数据
        wget "${URL}graph_xport.php?local_graph_id=${id}&rra_id=3" -O $(date -d 1 +%Y/%m/month/data/)${name}.xls
        fi
elif [ "$DAY" = 01 ];then
wget "${URL}graph_xport.php?local_graph_id=${id}&rra_id=3" -O $(date -d 1 +%Y/%m/month/data/)${name}.xls
fi
done

具体效果如图

脚本运行结果如下

只在月目录中下载了带有指定日期的月数据 每月指定日期的会在每月1日下载

时间: 2024-12-06 20:42:08

Cacti图形数据自动导出脚本(二)的相关文章

Cacti节点数据库自动同步脚本

因公司CA平台较多,每次添加或修改数据都需要在好几个CA上进行操作,同时因公司每台CA上都部署有自动导出脚本,如果手动给每台CA服务器添加或修改数据的话会造成图形ID不一致,从而导致自动导出的图形不一致等问题.所以做次脚本.部署在主CA上.并添加crontab计划任务.每日凌晨自动同步所有节点数据库,使所有节点数据一致. 一.首先编辑脚本 touch /root/back.sh chmod +x /root/back.sh vi /root/back.sh 二.插入一下脚本内容,具体参数根据实际

as3+java+mysql(mybatis) 数据自动工具(二)

AutoScript 项目结构如下图 ---AutoScript.java 为程序入口 ---com.autoscript.object 同步 as3 和 java 的数据类 ---com.autoscript.database 同步 as3.java 和 mysql 的建表语句 ---com.autoscript.macro 同步 as3 和 java 的常量定义 ---samples 一些数据.常量配置示例 ---templates 项目中用到了 freemarker,该目录为输出文件模板目

nmon部署安装 cacti图表自动导出

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果. nmon所记录的数据包含以下一些方面: cpu占用率 内存使用情况 磁盘I/O速度.传输和读写比率 文件系统的使用率 网络I/O速度.传输和读写比率.错误统计率与传输包的大小 消耗资源最多的进程 计算机详细信息和资源

SQL Server 2008 导出脚本及数据方法

方法一:SQL Server2008自带的生成脚本可以生成导出脚本. 选中要导出数据的数据库节点,点鼠标"右键",在菜单中选择"任务"->"生成脚本",如图: 2.选中所要编辑生成脚本的数据库.勾选"为所选数据库中的所有对象编写脚本".然后点击下一步,如下图 3.在弹出的界面中,把"编写数据的脚步"置为true,点击"下一步". 4.在"输出选项"对话框中,我这

java使用jxl,自动导出数据excle,quartz自动发送邮件

=============JAVA后台代码===================== package com.qgc.service.autoSendMsg.AutoSendMsg import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.uti

Struts2学习(二)——数据自动封装和自动传递

第一点:method属性学习 可以在一个action(MethodAction)里,定义多个方法method1().method2()(类比execute方法)返回String字符串. 再在package中写入与method对应的action请求url,在每个action标签里的result标签里name对应为返回的字符串作为接收, type属性默认为dispatcher,再返回JSP页面. 第二点:数据自动封装和自动传递 表单提交的属性值(name值)要与action里定义的属性(privat

Cacti 系统批量添加Device脚本

[功能]: 自动添加设备,自动生成模板图像; 自动生成远程抓取的数据图像; 自动添加到相应的组. [准备工作]: 1.启动客户端snmpd服务,并设置snmpd.conf文件: /etc/init.d/snmpdstart ;chkconfig snmpd on [[email protected] .ssh]# cat /etc/snmp/snmpd.conf com2sec notConfigUser  default      public group  notConfigGroup v1

Oracle数据导入导出命令

IMP 和EXP命令 Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用. 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于在oracle 8i中安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执

数据报表导出功能改进

一.           前言 财务在每月月底做财务数据统计时,需要统计每月产品的出货单及退货单报表数据,故要求在每月月底要汇总当月的报表数据,每一季度或者半年也要相应的统计报表数据,并能把数据导出到excl表格,所以数据报表导出功能则是必然的.财务提供的excel表格字段繁多,汇总下关联到数据库表达到7张以上,故在进行出货单或者退货单报表查询之时,由于涉及到多张表关联,故每次查询都需要耗费相当多的时间和空间. 二.           实现 数据报表只需要按照起始时间和结束时间进行查询和导出.