我需要使用一个我一直在研究的BASH脚本来从一些启用了SNMP的网络打印机中收集几个OID。
我的请求:
snmpget -v2c -c public 192.168.0.77
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.2
我的实际回复:
.1.3.6.1.2.1.1.1 = Counter32: 1974
.1.3.6.1.2.1.1.2 = Counter32: 633940
期望的响应:
1974
633940314
(仅提供 oid 值)
我查看并测试了几个选项,使用了下面网站的资源:
http://www.netsnmp.org/docs/man/snmpcmd.html#lbAF
-Oq
可以去除 '=',所以运行:
snmpget -v2c -c public -Oq 10.15.105.133
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.2
返回值
.1.3.6.1.2.1.1.1 Counter32: 1974
.1.3.6.1.2.1.1.2 Counter 32: 633940314
所以我知道我已经正确表达了我的请求。
我正在将这些值写入MYSQL数据库,我在我的表模式中设置了数据类型,请求是一致的,所以我知道OID的定义,因此我不需要所有返回的信息,只需要OID本身的值,这样我就可以将其写入我的数据库而不操作响应。我可能可以通过提取“:”右侧的信息并写入OID的值来操作响应。
我对SNMP(http://www.net-snmp.org/)相对较新,但我不明白为什么这不是一个更常见的问题,因为我已经到处搜索答案,这篇文章是我最后的求助...