snmp 自定义OID应用

这几天对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频繁度。

你可能感兴趣的:(snmp)