使用 Net-SNMP 时 PEN 之后的 OID 对象在 snmpd.conf 中扩展
OID objects after PEN when using Net-SNMP extend in snmpd.conf
Linux Net-SNMP 代理可以在 /etc/snmp/snmpd.conf 上使用 PEN(私有企业编号)进行扩展(man snmpd.conf
了解详情)
# from the man page: extend [MIBOID] NAME PROG ARGS
extend .1.3.6.1.4.1.32473 2 /tmp/snmp.sh
snmp.sh 是一个简单的 bash 脚本,它将回显传递的参数或当前日期,否则会带有一些奇怪的退出代码
#!/bin/bash
if [ -n "" ]; then
echo ""
exit 51
fi
/bin/date '+%F %T'
exit 37
运行 snmpwalk
在那个 OID
snmpwalk -c public -v 2c 127.0.0.1 SNMPv2-SMI::enterprises.32473
Returns
SNMPv2-SMI::enterprises.32473.1.0 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.2.1.2.1.50 = STRING: "/tmp/snmp.sh"
SNMPv2-SMI::enterprises.32473.2.1.3.1.50 = ""
SNMPv2-SMI::enterprises.32473.2.1.4.1.50 = ""
SNMPv2-SMI::enterprises.32473.2.1.5.1.50 = INTEGER: 5
SNMPv2-SMI::enterprises.32473.2.1.6.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.2.1.7.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.2.1.20.1.50 = INTEGER: 4
SNMPv2-SMI::enterprises.32473.2.1.21.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.3.1.1.1.50 = STRING: "2018-06-07 20:53:44"
SNMPv2-SMI::enterprises.32473.3.1.2.1.50 = STRING: "2018-06-07 20:53:44"
SNMPv2-SMI::enterprises.32473.3.1.3.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.3.1.4.1.50 = INTEGER: 37
SNMPv2-SMI::enterprises.32473.4.1.2.1.50.1 = STRING: "2018-06-07 20:53:44"
试图解读这些数字
32473
是为示例和文档保留的 PEN,可在本地用于测试目的
50
是ascii字符2
的十进制值,NAME。
使用 -Of
或 -Os
与 snmpwalk
或 snmptranslate
来提供树的解释不起作用,输出显示纯数字
snmptranslate -OS -Td SNMPv2-SMI::enterprises.32473.2.1.1.50
结果
SNMPv2-SMI::enterprises.32473.2.1.1.50
enterprises OBJECT-TYPE
-- FROM SNMPv2-SMI
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) 32473 2 1 1 50 }
32473后面的对象(数字)是什么意思?
可以通过与不使用 PEN OID
的另一种形式的 extend
选项的 snmpwalk
结果进行比较来解释这些对象编号
extend 3 /tmp/snmp.sh 787878
运行一个snmpwalk
获取符号名
snmpwalk -c public -v 2c localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
结果:
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendCommand."3" = STRING: /tmp/snmp.sh
NET-SNMP-EXTEND-MIB::nsExtendArgs."3" = STRING: 787878
NET-SNMP-EXTEND-MIB::nsExtendInput."3" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."3" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."3" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."3" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."3" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."3" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."3" = STRING: 787878
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."3" = STRING: 787878
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."3" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."3" = INTEGER: 51
NET-SNMP-EXTEND-MIB::nsExtendOutLine."3".1 = STRING: 787878
添加 -On
以获得数字输出
.1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1
.1.3.6.1.4.1.8072.1.3.2.2.1.2.1.51 = STRING: /tmp/snmp.sh
.1.3.6.1.4.1.8072.1.3.2.2.1.3.1.51 = STRING: 787878
.1.3.6.1.4.1.8072.1.3.2.2.1.4.1.51 = STRING:
.1.3.6.1.4.1.8072.1.3.2.2.1.5.1.51 = INTEGER: 5
.1.3.6.1.4.1.8072.1.3.2.2.1.6.1.51 = INTEGER: exec(1)
.1.3.6.1.4.1.8072.1.3.2.2.1.7.1.51 = INTEGER: run-on-read(1)
.1.3.6.1.4.1.8072.1.3.2.2.1.20.1.51 = INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.3.2.2.1.21.1.51 = INTEGER: active(1)
.1.3.6.1.4.1.8072.1.3.2.3.1.1.1.51 = STRING: 787878
.1.3.6.1.4.1.8072.1.3.2.3.1.2.1.51 = STRING: 787878
.1.3.6.1.4.1.8072.1.3.2.3.1.3.1.51 = INTEGER: 1
.1.3.6.1.4.1.8072.1.3.2.3.1.4.1.51 = INTEGER: 55
.1.3.6.1.4.1.8072.1.3.2.4.1.2.1.51.1 = STRING: 787878
PEN 练习的数字输出是
snmpwalk -On -c public -v 2c 127.0.0.1 SNMPv2-SMI::enterprises.32473
.1.3.6.1.4.1.32473.1.0 = INTEGER: 1
.1.3.6.1.4.1.32473.2.1.2.1.50 = STRING: "/tmp/snmp.sh"
.1.3.6.1.4.1.32473.2.1.3.1.50 = ""
.1.3.6.1.4.1.32473.2.1.4.1.50 = ""
.1.3.6.1.4.1.32473.2.1.5.1.50 = INTEGER: 5
.1.3.6.1.4.1.32473.2.1.6.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.2.1.7.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.2.1.20.1.50 = INTEGER: 4
.1.3.6.1.4.1.32473.2.1.21.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.3.1.1.1.50 = STRING: "2018-06-07 20:24:36"
.1.3.6.1.4.1.32473.3.1.2.1.50 = STRING: "2018-06-07 20:24:36"
.1.3.6.1.4.1.32473.3.1.3.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.3.1.4.1.50 = INTEGER: 33
.1.3.6.1.4.1.32473.4.1.2.1.50.1 = STRING: "2018-06-07 20:24:36"
现在我们可以通过将共同部分放在末尾并添加一些方便的格式来逐行比较两个练习
Ex1: .1.3.6.1.4.1.32473. 1.0 = INTEGER: 1
示例 2:.1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1
对所有条目执行相同操作并逐行比较:
nsExtendNumEntries .1.0 = INTEGER: 1
nsExtendCommand .2.1.2.1.50 = STRING: "/tmp/snmp.sh"
nsExtendArgs .2.1.3.1.50 = ""
nsExtendInput .3.2.1.4.1.50 = ""
nsExtendCacheTime .2.1.5.1.50 = INTEGER: 5
nsExtendExecType .2.1.6.1.50 = INTEGER: 1
nsExtendRunType .2.1.7.1.50 = INTEGER: 1
nsExtendStorage .2.1.20.1.50 = INTEGER: 4
nsExtendStatus .2.1.21.1.50 = INTEGER: 1
nsExtendOutput1Line .3.1.1.1.50 = STRING: "2018-06-07 20:24:36"
nsExtendOutputFull .3.1.2.1.50 = STRING: "2018-06-07 20:24:36"
nsExtendOutNumLines .3.1.3.1.50 = INTEGER: 1
nsExtendResult .3.1.4.1.50 = INTEGER: 37
nsExtendOutLine .4.1.2.1.50.1 = STRING: "2018-06-07 20:24:36"
Linux Net-SNMP 代理可以在 /etc/snmp/snmpd.conf 上使用 PEN(私有企业编号)进行扩展(man snmpd.conf
了解详情)
# from the man page: extend [MIBOID] NAME PROG ARGS
extend .1.3.6.1.4.1.32473 2 /tmp/snmp.sh
snmp.sh 是一个简单的 bash 脚本,它将回显传递的参数或当前日期,否则会带有一些奇怪的退出代码
#!/bin/bash
if [ -n "" ]; then
echo ""
exit 51
fi
/bin/date '+%F %T'
exit 37
运行 snmpwalk
在那个 OID
snmpwalk -c public -v 2c 127.0.0.1 SNMPv2-SMI::enterprises.32473
Returns
SNMPv2-SMI::enterprises.32473.1.0 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.2.1.2.1.50 = STRING: "/tmp/snmp.sh"
SNMPv2-SMI::enterprises.32473.2.1.3.1.50 = ""
SNMPv2-SMI::enterprises.32473.2.1.4.1.50 = ""
SNMPv2-SMI::enterprises.32473.2.1.5.1.50 = INTEGER: 5
SNMPv2-SMI::enterprises.32473.2.1.6.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.2.1.7.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.2.1.20.1.50 = INTEGER: 4
SNMPv2-SMI::enterprises.32473.2.1.21.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.3.1.1.1.50 = STRING: "2018-06-07 20:53:44"
SNMPv2-SMI::enterprises.32473.3.1.2.1.50 = STRING: "2018-06-07 20:53:44"
SNMPv2-SMI::enterprises.32473.3.1.3.1.50 = INTEGER: 1
SNMPv2-SMI::enterprises.32473.3.1.4.1.50 = INTEGER: 37
SNMPv2-SMI::enterprises.32473.4.1.2.1.50.1 = STRING: "2018-06-07 20:53:44"
试图解读这些数字
32473
是为示例和文档保留的 PEN,可在本地用于测试目的
50
是ascii字符2
的十进制值,NAME。
使用 -Of
或 -Os
与 snmpwalk
或 snmptranslate
来提供树的解释不起作用,输出显示纯数字
snmptranslate -OS -Td SNMPv2-SMI::enterprises.32473.2.1.1.50
结果
SNMPv2-SMI::enterprises.32473.2.1.1.50
enterprises OBJECT-TYPE
-- FROM SNMPv2-SMI
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) 32473 2 1 1 50 }
32473后面的对象(数字)是什么意思?
可以通过与不使用 PEN OID
的另一种形式的extend
选项的 snmpwalk
结果进行比较来解释这些对象编号
extend 3 /tmp/snmp.sh 787878
运行一个snmpwalk
获取符号名
snmpwalk -c public -v 2c localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
结果:
NET-SNMP-EXTEND-MIB::nsExtendNumEntries.0 = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendCommand."3" = STRING: /tmp/snmp.sh
NET-SNMP-EXTEND-MIB::nsExtendArgs."3" = STRING: 787878
NET-SNMP-EXTEND-MIB::nsExtendInput."3" = STRING:
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."3" = INTEGER: 5
NET-SNMP-EXTEND-MIB::nsExtendExecType."3" = INTEGER: exec(1)
NET-SNMP-EXTEND-MIB::nsExtendRunType."3" = INTEGER: run-on-read(1)
NET-SNMP-EXTEND-MIB::nsExtendStorage."3" = INTEGER: permanent(4)
NET-SNMP-EXTEND-MIB::nsExtendStatus."3" = INTEGER: active(1)
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."3" = STRING: 787878
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."3" = STRING: 787878
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."3" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."3" = INTEGER: 51
NET-SNMP-EXTEND-MIB::nsExtendOutLine."3".1 = STRING: 787878
添加 -On
以获得数字输出
.1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1
.1.3.6.1.4.1.8072.1.3.2.2.1.2.1.51 = STRING: /tmp/snmp.sh
.1.3.6.1.4.1.8072.1.3.2.2.1.3.1.51 = STRING: 787878
.1.3.6.1.4.1.8072.1.3.2.2.1.4.1.51 = STRING:
.1.3.6.1.4.1.8072.1.3.2.2.1.5.1.51 = INTEGER: 5
.1.3.6.1.4.1.8072.1.3.2.2.1.6.1.51 = INTEGER: exec(1)
.1.3.6.1.4.1.8072.1.3.2.2.1.7.1.51 = INTEGER: run-on-read(1)
.1.3.6.1.4.1.8072.1.3.2.2.1.20.1.51 = INTEGER: permanent(4)
.1.3.6.1.4.1.8072.1.3.2.2.1.21.1.51 = INTEGER: active(1)
.1.3.6.1.4.1.8072.1.3.2.3.1.1.1.51 = STRING: 787878
.1.3.6.1.4.1.8072.1.3.2.3.1.2.1.51 = STRING: 787878
.1.3.6.1.4.1.8072.1.3.2.3.1.3.1.51 = INTEGER: 1
.1.3.6.1.4.1.8072.1.3.2.3.1.4.1.51 = INTEGER: 55
.1.3.6.1.4.1.8072.1.3.2.4.1.2.1.51.1 = STRING: 787878
PEN 练习的数字输出是
snmpwalk -On -c public -v 2c 127.0.0.1 SNMPv2-SMI::enterprises.32473
.1.3.6.1.4.1.32473.1.0 = INTEGER: 1
.1.3.6.1.4.1.32473.2.1.2.1.50 = STRING: "/tmp/snmp.sh"
.1.3.6.1.4.1.32473.2.1.3.1.50 = ""
.1.3.6.1.4.1.32473.2.1.4.1.50 = ""
.1.3.6.1.4.1.32473.2.1.5.1.50 = INTEGER: 5
.1.3.6.1.4.1.32473.2.1.6.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.2.1.7.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.2.1.20.1.50 = INTEGER: 4
.1.3.6.1.4.1.32473.2.1.21.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.3.1.1.1.50 = STRING: "2018-06-07 20:24:36"
.1.3.6.1.4.1.32473.3.1.2.1.50 = STRING: "2018-06-07 20:24:36"
.1.3.6.1.4.1.32473.3.1.3.1.50 = INTEGER: 1
.1.3.6.1.4.1.32473.3.1.4.1.50 = INTEGER: 33
.1.3.6.1.4.1.32473.4.1.2.1.50.1 = STRING: "2018-06-07 20:24:36"
现在我们可以通过将共同部分放在末尾并添加一些方便的格式来逐行比较两个练习
Ex1: .1.3.6.1.4.1.32473. 1.0 = INTEGER: 1
示例 2:.1.3.6.1.4.1.8072.1.3.2.1.0 = INTEGER: 1
对所有条目执行相同操作并逐行比较:
nsExtendNumEntries .1.0 = INTEGER: 1
nsExtendCommand .2.1.2.1.50 = STRING: "/tmp/snmp.sh"
nsExtendArgs .2.1.3.1.50 = ""
nsExtendInput .3.2.1.4.1.50 = ""
nsExtendCacheTime .2.1.5.1.50 = INTEGER: 5
nsExtendExecType .2.1.6.1.50 = INTEGER: 1
nsExtendRunType .2.1.7.1.50 = INTEGER: 1
nsExtendStorage .2.1.20.1.50 = INTEGER: 4
nsExtendStatus .2.1.21.1.50 = INTEGER: 1
nsExtendOutput1Line .3.1.1.1.50 = STRING: "2018-06-07 20:24:36"
nsExtendOutputFull .3.1.2.1.50 = STRING: "2018-06-07 20:24:36"
nsExtendOutNumLines .3.1.3.1.50 = INTEGER: 1
nsExtendResult .3.1.4.1.50 = INTEGER: 37
nsExtendOutLine .4.1.2.1.50.1 = STRING: "2018-06-07 20:24:36"