snmp 自定义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才会触发脚本执行。

这几天对SNMP协议 进行了研究,相比SSH方式到远程主机获取脚本运行结果的方式,SNMP方式获取既安全又方便,在远程主机繁忙时段,运用SNMP好像比SSH还省资源。

以下示例如何添加自义脚本。

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       public
group   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:脚本绝对路径


3,如何获取值
[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频繁度。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值