首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Net::SNMP::Util::OID不将我所有的文本OID转换为数字OID?

为什么Net::SNMP::Util::OID不将我所有的文本OID转换为数字OID?
EN

Stack Overflow用户
提问于 2016-06-08 15:51:58
回答 1查看 554关注 0票数 1

我试图使用1.3.6.1.2将从陷阱获得的一些OID转换为数字虚线符号(如Net::SNMP::Util::OID ),但并不是所有的OID都被转换。有人能解释我做错了什么吗?

代码语言:javascript
复制
#!/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");

输出:

代码语言:javascript
复制
DISMAN-EVENT-MIB::sysUpTimeInstance
1.3.6.1.2.1.1.1.0
SNMPv2-MIB::snmpTrapOID.0
IF-MIB::linkDown
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 17:07:38

Net::SNMP::Util::OID使用硬编码查找表,因此它只适用于MIB和IF-MIB中的某些OID。例如,包含IF-MIB::ifName,而IF-MIB::linkDown不包含。

它也不允许您在MIB名称前加上前缀,所以

代码语言:javascript
复制
oid('ifName')

工作时间

代码语言:javascript
复制
oid('IF-MIB::ifName')

不会的。

我建议使用到Net库的Perl API。代替。它允许您加载任意MIB,并将OID从各种格式转换为多种格式。

例如:

代码语言:javascript
复制
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);
}

输出:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37707315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档