以下示例如何添加自义脚本。
1、目的:想采集远程主机运行脚本
[root@mini25 tmp]# cat /root/conn.sh
#!/bin/sh
conn=`netstat -s -t | grep connections\ established |awk '{print $1}'`
echo $conn
2、远程主机须启用SNMP协议及开启SNMP协议,以下是/etc/snmp/snmpd.conf
com2sec notConfigUser default publicgroup notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view systemview included .1
access notConfigGroup "" any noauth exact systemview none none
extend .1.3.6.1.4.1.2021.18 conn /root/conn.sh
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root (configure /etc/snmp/snmp.local.conf)
注意红色部分:
extend .1.3.6.1.4.1.2021.18 conn /root/conn.sh
extend : 表示SNMP采用EXTEN扩展方法
.1.3.6.1.4.1.2021.18:OID节点,其中.1.3.6.1.4.1.2021.是专用扩展之用,不可更改,后面的可自定义,如18可改成任意数字
conn:自定义OID名,可任意
/root/conn.sh:脚本绝对路径
[root@mini25 tmp]# snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.18
UCD-SNMP-MIB::ucdavis.18.1.0 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.18.2.1.2.4.99.111.110.110 = STRING: "/root/conn.sh"
UCD-SNMP-MIB::ucdavis.18.2.1.3.4.99.111.110.110 = ""
UCD-SNMP-MIB::ucdavis.18.2.1.4.4.99.111.110.110 = ""
UCD-SNMP-MIB::ucdavis.18.2.1.5.4.99.111.110.110 = INTEGER: 5
UCD-SNMP-MIB::ucdavis.18.2.1.6.4.99.111.110.110 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.18.2.1.7.4.99.111.110.110 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.18.2.1.20.4.99.111.110.110 = INTEGER: 4
UCD-SNMP-MIB::ucdavis.18.2.1.21.4.99.111.110.110 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.18.3.1.1.4.99.111.110.110 = STRING: "4"
UCD-SNMP-MIB::ucdavis.18.3.1.2.4.99.111.110.110 = STRING: "4"
UCD-SNMP-MIB::ucdavis.18.3.1.3.4.99.111.110.110 = INTEGER: 1
UCD-SNMP-MIB::ucdavis.18.3.1.4.4.99.111.110.110 = INTEGER: 0
UCD-SNMP-MIB::ucdavis.18.4.1.2.4.99.111.110.110.1 = STRING: "4"
[root@mini25 tmp]# snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.18.4.1.2.4.99.111.110.110.1
UCD-SNMP-MIB::ucdavis.18.4.1.2.4.99.111.110.110.1 = STRING: "4"
经测试:OID .1.3.6.1.4.1.2021.18.4.1.2.4.99.111.110.110.1 是固定不变的。
疑问:SNMP对结果的采集是定时执行,还是其它什么规律呢??????
验证测试:
在snmpd.conf 中添加 一行
extend .1.3.6.1.4.1.2021.19 conn /root/wr.sh
对应脚本内容为:
[root@mini25 ~]# cat wr.sh
#!/bin/bash
echo $(date +%F' '%H':'%M':'%S) >> /root/log.txt
作用就是写一个时间值 到日志文件,同时用tailf 监控日志文件,用于验证到底是什么时间运行脚本的?
经验证,只有通过snmpwalk命令访问指定OID.1.3.6.1.4.1.2021.19 时,S NMP才会启动脚进程,所以,脚本执行的频繁度完全取决于访问对应OID频繁度。
本文介绍如何在SNMP中添加自定义脚本进行数据采集,以监控远程主机的连接状态。通过编辑`/etc/snmp/snmpd.conf`配置文件,将脚本与OID绑定,如`.1.3.6.1.4.1.2021.18.4.1.2.4.99.111.110.110.1`。SNMP脚本的执行依赖于OID的访问,访问频率决定了脚本的执行频率。验证测试表明,只有当通过`snmpwalk`命令访问特定OID时,SNMP才会触发脚本执行。
1602

被折叠的 条评论
为什么被折叠?



