网上也有许多相关文章,之前公司重搭cacti的时候学习过一阵。一直忘了总结。这里先把脚本放上。
使用脚本其实和手工添加的流程是一样的,添加device,然后画图。(感谢futurelinux的关于添加树状图的解答~)
首先是添加device,ip列表文件:hosts格式如下10.10.10.10=monitor(等号前面ip,后面主机名)
#!/bin/sh
say() {

/usr/local/bin/php -q /xxxxx/cacti/cli/add_device.php --description="$2" --ip="$1" --template=3 --community="public"
}
for i in `cat hosts`
do
v1=`echo -n $i |awk -F = '{printf $1}'`
v2=`echo -n $i |awk -F = '{printf $2}'`
say $v1 $v2
echo $v1
echo $v2
done
添加device后cacti会给那些机器分配id,通常批量添加时,那些主机的id是连续的。用seq命令生成序列写到idlist里。
现在根据那些id画图。
首先画出基础的图,所以有参数‘--graph-type=cg’。由于主机都是centos机器,这里使用4,11,13这三个画图模板(不同的cacti版本的里面的画图模板也许会不一样,所以写脚本之前最好先跑一下add_graphs.php看看。应该使用什么模板)。
#!/bin/sh
for t in `cat idlist`
do
for i in `echo -n "4 11 13"`
do
#echo $t $i
/usr/local/bin/php -q /xxxxx/cacti/cli/add_graphs.php --host-id=$t --graph-type=cg --graph-template-id=$i
# –snmp-query-id=1 –snmp-query-type-id=13 –snmp-field=ifOperStatus –snmp-value=Up
done
done
#add_graphs.php --graph-type=[cg|ds] --graph-template-id=[ID] --host-id=[ID]
之后画一些定制的图,如网卡,磁盘。这里先用add_graphs.php的‘--list-snmp-values’这个参数查出那个主机具体有哪些设备,然后逐一添加。
画这些定制图时,都要有这一个参数‘--graph-type=ds’ ,网卡的画图模板id是2,分区的id是26(不同的cacti版本的里面的画图模板也许会不一样,所以写脚本之前最好先跑一下add_graphs.php看看。应该使用什么模板~~真啰嗦,又说了一遍~)
脚本里的添加网卡语句我注释了,需要的话可以打开。
#!/bin/sh
for ID in `cat idlist`
do
#add_interface
#for j in  `/usr/local/bin/php /xxxxx/cacti/cli/add_graphs.php --host-id=$ID --graph-type=ds  --graph-template-id=2 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --list-snmp-values|grep -v ifDescr|grep -v lo|grep -v sit0`
#do
#/usr/local/bin/php /xxxxx/cacti/cli/add_graphs.php --host-id=$ID --graph-type=ds  --graph-template-id=2 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --snmp-value=$j
#done
#add_partition
for i in  `/usr/local/bin/php /xxxxx/cacti/cli/add_graphs.php --host-id=$ID --graph-type=ds  --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --list-snmp-values|grep -v hrStorage|grep -v Memory|grep -v Swap|grep -v Space|grep -v Buffers|grep -v Real`
do
/usr/local/bin/php /xxxxx/cacti/cli/add_graphs.php --host-id=$ID --graph-type=ds  --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value=$i
done
done
########################################
以下是futurelinux补充的用脚本建立tree目录树的方法。
建立tree目录树 用add_tree.php文件 php add_tree.php 查询 --list-hosts查询主机节点 --list-trees查询树形根结构id和名字 --list-nodes --tree-id= 查询节点
#!/bin/bash
yphp=/usr/bin/php
device=/var/www/html/cacti/cli/add_tree.php 
ay=(kandian KSS Smallfile video_cdn weibo_cdn)
numbers=`echo ${#ay[*]}`
for ((i=0;i<$numbers;i++))
do
allname=`echo "${ay[$i]}"`
$yphp $device --type=tree --name=$allname   --sort-method=manual ##--type=[tree|node] "这个你想建立的是根tree还是node" --name="就是想取的名字了" --sort-method=manual就是方法了。
done
首先建立kandian KSS Smallfile video_cdn weibo_cdn 5个tree根
拿一个kandian 根tree出来
num1=`$yphp $device --list-trees|grep -w "kandian"|awk '{print $1}'` ##找出kandian的node号码
nodearray1=(电信 网通 Edu) ###kandian下面需要加的3个 电信 网通 Edu 二级目录枝
numbers1=`echo ${#nodearray1[*]}`
for ((m=0;m<$numbers1;m++))
do
allname1=`echo "${nodearray1[$m]}"`
$yphp $device --type=node --node-type=header --tree-id=$num1 --name=$allname1
done
建好了之后,这就是查询kandian下 电信 网通 Edu 3个节点node号
kandian_node1=`$yphp $device --list-nodes --tree-id=$num1|grep -w '电信'|awk '{print $2}'`
kandian_node2=`echo $(($kandian_node1+1))`
kandian_node3=`echo $(($kandian_node2+1))`
这个为kandian 电信 下 需要加入的城市三级目录枝
kandian_ctc=(东莞 温州 南京 武汉 西安 上海 成都)
kandain_num=`echo ${#kandian_ctc[*]}` ##数量
然后添加节点
for ((kd=0;kd<$kandain_num;kd++))
do
kandian_node_name=`echo "${kandian_ctc[$kd]}"`
$yphp $device --type=node --node-type=header --tree-id=$num1 --parent-node=$kandian_node1   --name=$kandian_node_name ####--tree-id=“就是看点的kandian的tree根node号码 ”--parent-node="就为 电信 的node号 它的父(上一级)node号,叮在这个 电信 node下"
done
host_id=`$yphp $device --list-hosts|grep -w '192.168.122.16'|awk '{print $1}'` ##为cacti上已经add的主机node号
host_id_1=`$yphp $device --list-hosts|grep -w '192.168.122.153'|awk '{print $1}'`
kd_xf_node=(东莞 温州 南京 武汉 西安 上海 成都)
kd_xf_num=`echo ${#kd_xf_node[*]}`
for ((kd=0;kd<$kd_xf_num;kd++))
do
kd_xf_id=`echo "${kd_xf_node[$kd]}"`
kd_node=`$yphp $device --list-nodes --tree-id=$num1|grep -w $kd_xf_id|awk '{print $2}'` ##这个为查询 东莞 温州 南京 武汉 西安 上海 成都 这些城市的node号
for kdid in `seq "$host_id" "$host_id_1"`
do
$yphp $device --type=node --node-type=host --tree-id=$num1 --parent-node=$kd_node --host-id=$kdid #####这个为在这些节点上添加host主机 这里--node-type="就为host了(加主机了)而不是header了" --host-id="这里就需要你的主机id号"
done
done
那么一个kandian的tree结构就出来了,如果还想加4级目录也可以,也按这个方法。给不同的城市不同的主机ip,给予不同的 --host-id=“这个为id号”。

#####################################
cacti的那几个php脚本确实强大,许多参数都还没有用过呢。有时间一定要好好学学。

转载于:https://blog.51cto.com/chcearth/759313

cacti批量添加脚本相关推荐

  1. 详细注释版的ABAQUS COH2D4单元批量添加Python脚本

    详细注释版的ABAQUS COH2D4单元批量添加Python脚本 ABAQUS Cohesive单元批量添加脚本程序-附详细注释版: #本程序只适用于二维问题,对于三维COH3D8的批量嵌入只需要转 ...

  2. 利用脚本批量添加域用户账户

    以下内容摘自笔者编著的<网管员必读--网络管理>(第2版)一书: 2.4.6 利用脚本批量添加域用户账户  以上两种方法是比较常用的批量用户账户添加方法,但是不够灵活(不可以设置密码),而 ...

  3. python实现api接口的脚本_Zabbix批量添加主机,Python调用api接口方式【脚本定制】...

    使用说明: 此脚本使用方法,详细步骤如下(不清楚的可以加我微信或QQ咨询) 脚本默认添加内容如excel模板所示:主机名.显示名.IP地址.所属组.所属模板1.所属模板2(如需要添加其他内容如: 多个 ...

  4. python编写arcgis脚本_ArcGis Python脚本——批量添加字段

    插个广告,制作ArcGIS的Tool工具学习下面的教程就对了: 以下是正文: 先看如何增加一个字段 函数:arcpy.AddField_management 语法:AddFields_manageme ...

  5. 脚本篇-批量添加文件前缀,省时省力

    批量添加文件前缀,省时省力 1.安装python3环境 2.将需要修改的文件和脚本统一放在一个文件夹下,执行命令,输入需要添加的前缀就行. 代码如下: 1.安装python3环境 python3安装包 ...

  6. 编写一个批量添加用户脚本

    5案例5:编写一个批量添加用户脚本 5.1问题 本例要求在虚拟机server0上创建/root/batchusers脚本,任务目标如下: 此脚本要求提供用户名列表文件作为参数 如果没有提供参数,此脚本 ...

  7. linux shell 脚本 if和else代码块都被执行 | shell 批量添加、删除用户(for循环做if嵌套)

    前言: 略懂编程的都知道,if else只能进其一,满足if条件就不会进else, 然而在shell学习过程中,却遇到了,满足了if条件后,依然执行了else中的代码块. 本案例所有代码均在:/roo ...

  8. 神马php资源,神马批量添加站点PHP脚本

    今天来分享一个神马批量添加域名到站长平台的PHP脚本,这几天把批量添加的软件也发出来吧~ //要创建的两个文件 $TxtFileName = "index.html"; //以读写 ...

  9. 用户管理(一):使用shell脚本批量添加指定数量的用户

    运行环境 CentOS 6.9.Xshell 5 前言 我们在需要创建多个用户的时候,使用手工单独创建是比较耗费精力的事情,我们可以通过shell脚本实现批量添加用户,实现指定数量用户.创建用户默认名 ...

最新文章

  1. Ubuntu 下类似 Xshell 工具、更换阿里源
  2. 求n!中含有某个因子个数的方法
  3. pip时read time out
  4. SpringBoot异常处理ErrorController详解
  5. tensorflow saver_机器学习入门(6):Tensorflow项目Mnist手写数字识别-分析详解
  6. python入门需要有什么基础?
  7. java扫描一个端口状态_java扫描端口,如何判断端口是用来做什么的(提供什么服务的)?...
  8. 游戏脚本在移动游戏设计中的作用_游戏设计中道具设计分步解说
  9. android:layout_margintop=3dip,南昌航空大学android期末复习资料之 编程题.pdf
  10. Python集合set与frozenset的区别
  11. 博图导入的程序用step7读出_博图编程与STEP7编程区别
  12. 常见的SQL优化面试题
  13. 计算机图形学(九)-纹理的应用,环境贴图、凹凸贴图、法线贴图、位移贴图
  14. zblog添加html标题出错,ZBLOG模板修改的一些技巧小结
  15. OpenCV画椭圆、实心圆、凹多边形、线段、矩形
  16. LINUX中安装gotop检测页面
  17. Linux系统安全加固指南(万字长文)
  18. HDU 2015 偶数求和
  19. 加速度计和陀螺仪模型(imu元件)分析
  20. 4G图传移动视频取证-可视安全生产监管-常见问题解答FAQ

热门文章

  1. 2.2 获取图像感兴趣区域_超火的机器视觉OpenCVSharp学习笔记3——图像形态学处理...
  2. linux反序列化漏洞,Apache Camel Java对象反序列化漏洞(CVE-2015-5348)
  3. html如何获取消息实体的长度,50道js面试题 XXXXX
  4. 2047.句子中的有效单词数
  5. php定时备份mysql,Windows服务器中PHP+MySQL设置定时备份
  6. python的父类和子类的继承关系和super()的使用
  7. android ril.java_Android RIL的java框架
  8. linux java maven_Linux安装java环境和maven
  9. 20190909:(leetcode习题)第一个错误的版本
  10. python安装失败未指定_windows 7 32bit安装 python3.5.0 安装错误 0x80240017 -未指定错误...