我正在编写一个rsyslog模板来从事件中过滤src和dst ip,但是正则表达式仅返回第一个匹配项。
示例事件:
ulogd [20230]:id =“ 2002”严重性=“ info” sys =“ SecureNet” sub =“ packetfilter” name =“已接受数据包” action =“ accept” fwrule =“ 89” initf =“ eth1” outitf =“ eth0” srcmac =“ aa:bb:cc:dd:ee:2c” dstmac =“ 00:11:22:ff:cc:aa” srcip =“ 10.10.1.250” dstip =“ 192.168.0.1” proto = “ 6” length =“ 52” tos =“ 0x00” prec =“ 0x00” ttl =“ 127” srcport =“ 64405” dstport =“ 1133” tcpflags =“ ACK”
模板语法
name | value
------------------
alpha | 90
beta | 105
beta | 44
beta | 56
gamma | 22
beta | 111
beta | 99
REGEX
name | min | max
------------------------
alpha | 90 | 90
beta | 44 | 105
gamma | 22 | 22
beta | 99 | 111
答案 0 :(得分:1)
如果只需要精确匹配2个ip,则可以在2个属性替换器中重复正则表达式模式,其中第二个指定要使用第二个匹配的ip地址。
使用“ ...”代表模式[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
,只是为了使其更具可读性,
%msg:R,ERE,0,FIELD,0:...--end%
%msg:R,ERE,0,FIELD,1:...--end%
或完整:
$template outfmt,"%msg:R,ERE,0,FIELD,0:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}--end% %msg:R,ERE,0,FIELD,1:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}--end%\n"