我希望创建一个Perl脚本,它可以查看snmp,提取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.有一些参考点可供使用:
我已经建立了一个基本框架来处理这件事。只是需要一些关于用于创建名称/描述字符串的逻辑的建议。
这.更新:基于Sinanü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"
};发布于 2013-04-11 16:42:57
你考虑过使用SNMP吗?它给了你一个%SNMP::MIB哈希
访问已解析的MIB信息的绑定散列。在MIB加载之后,这个散列允许访问在MIB元数据中解析的数据( MIB的结构(即模式))。哈希返回对SNMP::MIB::节点对象的良好引用,该对象表示单个MIB属性。节点可以使用多种“键”格式获取--叶名(例如,sysDescr)或完全/部分限定名称(例如,system.sysDescr)或完全限定的数字OID。
发布于 2013-04-11 16:39:52
正则表达式似乎是最简单的方法。
只需解析文件,查找“对象类型”行,然后以“对象类型”之前的文本作为名称。
然后查找"DESCRIPTION“,然后查找后面出现的引号之间的文本。
那就重复一遍!
https://stackoverflow.com/questions/15953803
复制相似问题