首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于匹配SNMP陷阱的正则表达式

用于匹配SNMP陷阱的正则表达式
EN

Stack Overflow用户
提问于 2013-11-04 12:46:16
回答 1查看 3.9K关注 0票数 1

我在后台运行了一个snmptrapd守护进程,并将所有陷阱记录到一个文件中,而则试图在perl程序中解析该日志。

SNMP v2c陷阱记录如下:

代码语言:javascript
复制
SNMPv2[**]2013-11-4[**]13:16:49[**]UDP: [127.0.0.1]:57819->[127.0.0.1][**].1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.8072.2.3.0.1       .1.3.6.1.4.1.8072.2.3.2.1 = INTEGER: 30 .1.3.6.1.4.1.8072.2.3.2.2 = STRING: lol

我已经成功地使用正则表达式解析了OID和远程IP地址,但是我无法解析所有剩余的陷阱值。这些措施是:

代码语言:javascript
复制
.1.3.6.1.4.1.8072.2.3.2.1 = INTEGER: 30 .1.3.6.1.4.1.8072.2.3.2.2 = STRING: lol

语法似乎很简单: TRAP_STUFF = TYPE:值重复了0次或更多次。

所以问题是,哪个正则表达式将允许我获取所有这些信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-04 15:38:22

基本上,对于日志行的左边部分,可以使用while逐个使用regex解析信息。

代码语言:javascript
复制
my $str = ".1.3.6.1.4.1.8072.2.3.2.1 = INTEGER: 30 .1.3.6.1.4.1.8072.2.3.2.2 = STRING: lol";
while ($str =~ /([\.\d]+)\s=\s([^:]+):\s([\S]+)/g) {
    my ($trap_stuff, $type, $value) = ($1, $2, $3);
    print "trap_stuff: $trap_stuff\ntype: $type\nvalue: $value\n";
}

输出:

代码语言:javascript
复制
trap_stuff: .1.3.6.1.4.1.8072.2.3.2.1
type: INTEGER
value: 30
trap_stuff: .1.3.6.1.4.1.8072.2.3.2.2
type: STRING
value: lol
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19767999

复制
相关文章

相似问题

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