首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Perl中的引用点从文件的各个部分创建字符串

使用Perl中的引用点从文件的各个部分创建字符串
EN

Stack Overflow用户
提问于 2013-04-11 16:13:34
回答 2查看 66关注 0票数 0

我希望创建一个Perl脚本,它可以查看snmp,提取MIB的部分给定引用点,并将结果添加到一个字符串中。

例如,这是我正在处理的数据的一部分:

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

我希望取出对象名称,添加一个逗号,然后是描述:

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

有一些参考点可供使用:

  1. 所有名称后面紧跟字符串"OBJECT-TYPE“。
  2. 所有的描述都被双引号包围,并紧跟一行“描述”。

我已经建立了一个基本框架来处理这件事。只是需要一些关于用于创建名称/描述字符串的逻辑的建议。

.更新:基于Sinanür的答案的基本脚本。所有这些都可以用完成。

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-11 16:42:57

你考虑过使用SNMP吗?它给了你一个%SNMP::MIB哈希

访问已解析的MIB信息的绑定散列。在MIB加载之后,这个散列允许访问在MIB元数据中解析的数据( MIB的结构(即模式))。哈希返回对SNMP::MIB::节点对象的良好引用,该对象表示单个MIB属性。节点可以使用多种“键”格式获取--叶名(例如,sysDescr)或完全/部分限定名称(例如,system.sysDescr)或完全限定的数字OID。

票数 3
EN

Stack Overflow用户

发布于 2013-04-11 16:39:52

正则表达式似乎是最简单的方法。

只需解析文件,查找“对象类型”行,然后以“对象类型”之前的文本作为名称。

然后查找"DESCRIPTION“,然后查找后面出现的引号之间的文本。

那就重复一遍!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15953803

复制
相关文章

相似问题

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