我正在使用perl/mysql/iptables中的分布式fail2ban类似系统。Perl正则表达式 - 从maillog中提取ipv4
从/ var/log/messages中提取ipv4地址正在工作,但现在我想将/ var/log/maillog添加到汤中。
我有一个perl正则表达式:[1]
/ (?:25[]|2[0-4]\d|1?\d\d?)\.
(?:25[]|2[0-4]\d|1?\d\d?)\.
(?:25[]|2[0-4]\d|1?\d\d?)\.
(?:25[]|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 option
您是否尝试过负向预测?就像'/...(?!\.)/' – zdim
我认为IP地址之后的点只是问题的起点 – Wolf
@zdim是的。匹配'194.102.60.19'0.host.ifxnetworks.com –