从/var/log/messages中提取ipv4地址已经可以实现,但是现在我想将/var/log/maillog加入到这个系统中。
我有一个perl正则表达式:[1]
/ (?:25[012345]|2[0-4]\d|1?\d\d?)\.
(?:25[012345]|2[0-4]\d|1?\d\d?)\.
(?:25[012345]|2[0-4]\d|1?\d\d?)\.
(?:25[012345]|2[0-4]\d|1?\d\d?) /x
以下是maillog中的一行记录:
v817YjcU016645: 194.102.60.190.host.ifxnetworks.com [190.60.102.194] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
这里的正则表达式匹配了 194.102.60.190
.host.ifxnetworks.com 和 [190.60.102.194
]。
我的代码中有以下内容($IP是上述正则表达式):
if ($line =~ m/($IP)/)
{
my ($ip) = $1;
在这里找到了第一个匹配的类似IP的字符串194.102.60.190
。host.ifxnetworks.com
那么,我该如何让正则表达式忽略以.
结尾的IPv4地址?
[1]为了易读性,Perl支持/x选项
/...(?!\.)/
。 - zdimmy ($IP) = $OCT . '\.' . $OCT . '\.' . $OCT . '\.' . $OCT
:) - Mogens TrasherDK