rsyslog regex不会变得贪婪

时间:2019-01-17 11:18:32

标签: regex templates rsyslog

我正在编写一个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

我正在测试: https://www.rsyslog.com/regex/

1 个答案:

答案 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"