设为首页 收藏本站
查看: 2877|回复: 1

[经验分享] Cacti图形数据自动导出脚本(二)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-26 09:11:44 | 显示全部楼层 |阅读模式
因业务需求
上篇文章链接

Cacti图形数据自动导出脚本(一)
http://www.iyunv.com/thread-164557-1-1.html

在上一篇文章中写的脚本只能在每月1日下载所有的月数据的图
但是有个别图形需要每月指定日期下载
特在此将脚本进行了小修改
添加了每月下载月数据时日期的判断
要求如下:

1、本脚本会每日、每月自动下载图形树中所有的图形中的日数据和月数据
2、添加到图形树中的图形名称前面必须添加*号、也可不加,但是得更改脚本中的sql语句
3、图形名称中不能含有空格等linux中非法的文件名字符
4、需要做每月指定日期导出月数据的,需要在指定的图形名称后面加上英文括号+日期如:
  流量导出1(21)
  脚本在下载时会自动判断括号内日期和当前日期是否相等。是的话就进行此图形月数据的下载。否则在每月1日进行月数据的下载。
脚本内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# 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:babyfenei@qq.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




具体效果如图
QQ截图20160126091120.png
脚本运行结果如下
只在月目录中下载了带有指定日期的月数据 每月指定日期的会在每月1日下载
QQ截图20160126091128.png


运维网声明 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-169617-1-1.html 上篇帖子: Cacti Weathermap 高级用法 (二) 下篇帖子: Cacti插件之Spine健步日飞
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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