两种办法:
1)pass方式
/etc/snmp/snmpd.conf
写脚本
脚本需要注意:要连续输出三行:1、OID 2、类型 3、值
如果不按照这个规定,直接输出值,将会报错。
检查
第二种方法:extend方法
/etc/snmp/snmpd.conf最后增加一行:
extend .1.3.6.1.4.1.9721.2 mylx /usr/bin/bash /tmp/lx.sh
写脚本(直接输出,不必象pass方式那样有规定)
#!/bin/sh #echo $2 #因为snmpd是用EXEC -g MIBOID来调脚本的,所以MIBOID是第二个参数 #echo string isdata=`df -h | grep -c '/adata'` mystr=NO if [ $isdata -eq 1 ]; then mystr=OK; fi echo $mystr
但是,这里定义的OID并不是可以直接引用的OID,具体引用值需要snmpwalk跑一下
.1.3.6.1.4.1.9721.2.1.0 = INTEGER: 1
.1.3.6.1.4.1.9721.2.2.1.2.4.109.121.108.120 = STRING: "/usr/bin/bash"
.1.3.6.1.4.1.9721.2.2.1.3.4.109.121.108.120 = STRING: "/tmp/lx.sh"
.1.3.6.1.4.1.9721.2.2.1.4.4.109.121.108.120 = ""
.1.3.6.1.4.1.9721.2.2.1.5.4.109.121.108.120 = INTEGER: 5
.1.3.6.1.4.1.9721.2.2.1.6.4.109.121.108.120 = INTEGER: 1
.1.3.6.1.4.1.9721.2.2.1.7.4.109.121.108.120 = INTEGER: 1
.1.3.6.1.4.1.9721.2.2.1.20.4.109.121.108.120 = INTEGER: 4
.1.3.6.1.4.1.9721.2.2.1.21.4.109.121.108.120 = INTEGER: 1
.1.3.6.1.4.1.9721.2.3.1.1.4.109.121.108.120 = STRING: "NO"
.1.3.6.1.4.1.9721.2.3.1.2.4.109.121.108.120 = STRING: "NO"
.1.3.6.1.4.1.9721.2.3.1.3.4.109.121.108.120 = INTEGER: 1
.1.3.6.1.4.1.9721.2.3.1.4.4.109.121.108.120 = INTEGER: 0
.1.3.6.1.4.1.9721.2.4.1.2.4.109.121.108.120.1 = STRING: "NO"