两种办法:
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"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义