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

本文档介绍了一个Cacti图形数据自动导出脚本,该脚本通过查询图形树并使用wget下载图形数据。脚本会根据设定的时间(例如每日00:01)运行,删除旧的下载列表并创建新的目录结构,然后下载日流量图和月流量图的图像及数据表。脚本需要修改Cacti的验证模式,确保免验证登录,并通过crontab设置定时任务。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值