我正在寻找创建一个 Perl 脚本来查看 snmp MIB,提取 MIB 给定参考点的部分,并将结果添加到字符串中。
例如,这是我正在使用的数据的一部分:
udpOutDatagrams OBJECT-TYPE
SYNTAX Counter
ACCESS read-only
STATUS mandatory
DESCRIPTION
"The total number of UDP datagrams sent from this
entity."
::= { udp 4 }
-- the UDP Listener table
-- The UDP listener table contains information about this
-- entity's UDP end-points on which a local application is
-- currently accepting datagrams.
udpTable OBJECT-TYPE
SYNTAX SEQUENCE OF UdpEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"A table containing UDP listener information."
::= { udp 5 }
udpEntry OBJECT-TYPE
SYNTAX UdpEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"Information about a particular current UDP
listener."
INDEX { udpLocalAddress, udpLocalPort }
::= { udpTable 1 }
我正在寻找对象名称,添加逗号,然后是描述:
udpOutDatagrams, The total number of UDP datagrams sent from this entity.
udpTable, A table containing UDP listener information.
udpEntry, Information about a particular current UDP listener.
有一些参考点可以使用:
- 所有名称后紧跟字符串“OBJECT-TYPE”。
- 所有描述都用双引号括起来,并紧跟在“DESCRIPTION”行之后
我已经整理了一个基本框架来处理这个问题。只需要一些关于用于创建名称/描述字符串的逻辑的建议。
更新:基于 Sinan Ünür 回答的基本脚本。这一切都可以用这个来完成。
#!/usr/local/bin/perl -w
use strict;
use SNMP;
$SNMP::save_descriptions = 1;
my $mib = $ARGV[0];
my $object;
&SNMP::addMibDirs("/usr/share/snmp/mibs/allMibs/");
&SNMP::loadModules($mib);
&SNMP::initMib();
foreach my $key ( keys %SNMP::MIB )
{
print "$SNMP::MIB{$key}{label}, $SNMP::MIB{$key}{description}, $SNMP::MIB{$key}{objectID}\n"
};