为什么 Net::SNMP::Util::OID 没有将我所有的文本 OID 转换为数字 OID?
Why doesn't Net::SNMP::Util::OID convert all of my textual OIDs to numeric OIDs?
我正在尝试使用 Net::SNMP::Util::OID 将从陷阱中获得的一些 OID 转换为数字点分符号(如 1.3.6.1.2
),但并非所有 OID 都已转换。谁能解释我做错了什么?
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Net::SNMP::Util::OID qw(*);
printf "%s\n", oid("DISMAN-EVENT-MIB::sysUpTimeInstance");
printf "%s\n", oid("sysDescr");
printf "%s\n", oid("SNMPv2-MIB::snmpTrapOID.0");
printf "%s\n", oid("IF-MIB::linkDown");
输出:
DISMAN-EVENT-MIB::sysUpTimeInstance
1.3.6.1.2.1.1.1.0
SNMPv2-MIB::snmpTrapOID.0
IF-MIB::linkDown
Net::SNMP::Util::OID 使用 hard-coded lookup table,因此它仅适用于 MIB-II 和 IF-MIB 中的某些 OID。例如,IF-MIB::ifName
包含在内,而 IF-MIB::linkDown
不包含。
它也不允许您在 MIB 名称前添加前缀,所以
oid('ifName')
在
时有效
oid('IF-MIB::ifName')
没有。
我建议改用 Perl API to the Net-SNMP library。它允许您加载任意 MIB 并将 OID 转换为各种格式。
例如:
use strict;
use warnings 'all';
use 5.010;
use SNMP;
# Load a MIB not bundled with Net-SNMP
SNMP::addMibFiles('./Sentry3.mib');
my @names = qw(
linkDown
IF-MIB::linkDown
SNMPv2-MIB::snmpTrapOID.0
systemTotalPower
);
foreach my $name (@names) {
say "$name: ", SNMP::translateObj($name);
}
输出:
linkDown: .1.3.6.1.6.3.1.1.5.3
IF-MIB::linkDown: .1.3.6.1.6.3.1.1.5.3
SNMPv2-MIB::snmpTrapOID.0: .1.3.6.1.6.3.1.1.4.1.0
systemTotalPower: .1.3.6.1.4.1.1718.3.1.6
我正在尝试使用 Net::SNMP::Util::OID 将从陷阱中获得的一些 OID 转换为数字点分符号(如 1.3.6.1.2
),但并非所有 OID 都已转换。谁能解释我做错了什么?
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Net::SNMP::Util::OID qw(*);
printf "%s\n", oid("DISMAN-EVENT-MIB::sysUpTimeInstance");
printf "%s\n", oid("sysDescr");
printf "%s\n", oid("SNMPv2-MIB::snmpTrapOID.0");
printf "%s\n", oid("IF-MIB::linkDown");
输出:
DISMAN-EVENT-MIB::sysUpTimeInstance
1.3.6.1.2.1.1.1.0
SNMPv2-MIB::snmpTrapOID.0
IF-MIB::linkDown
Net::SNMP::Util::OID 使用 hard-coded lookup table,因此它仅适用于 MIB-II 和 IF-MIB 中的某些 OID。例如,IF-MIB::ifName
包含在内,而 IF-MIB::linkDown
不包含。
它也不允许您在 MIB 名称前添加前缀,所以
oid('ifName')
在
时有效oid('IF-MIB::ifName')
没有。
我建议改用 Perl API to the Net-SNMP library。它允许您加载任意 MIB 并将 OID 转换为各种格式。
例如:
use strict;
use warnings 'all';
use 5.010;
use SNMP;
# Load a MIB not bundled with Net-SNMP
SNMP::addMibFiles('./Sentry3.mib');
my @names = qw(
linkDown
IF-MIB::linkDown
SNMPv2-MIB::snmpTrapOID.0
systemTotalPower
);
foreach my $name (@names) {
say "$name: ", SNMP::translateObj($name);
}
输出:
linkDown: .1.3.6.1.6.3.1.1.5.3
IF-MIB::linkDown: .1.3.6.1.6.3.1.1.5.3
SNMPv2-MIB::snmpTrapOID.0: .1.3.6.1.6.3.1.1.4.1.0
systemTotalPower: .1.3.6.1.4.1.1718.3.1.6