【问题标题】:rsyslog regex wont become greedyrsyslog 正则表达式不会变得贪婪
【发布时间】:2019-06-11 14:02:30
【问题描述】:

我正在编写一个 rsyslog 模板来从事件中过滤 src 和 dst ip,但是正则表达式只返回第一个匹配项。

示例事件:

ulogd[20230]: id="2002" severity="info" sys="SecureNet" sub="packetfilter" name="Packet accepted" 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" 原型= "6" length="52" tos="0x00" prec="0x00" ttl="127" srcport="64405" dstport="1133" tcpflags="ACK"

模板语法

%msg:R,ERE,0,FIELD:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})+--end%

正则表达式

([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})+

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

【问题讨论】:

  • 给我们更多更好的真实样本数据。并给我们纯化的正则表达式。它看起来不像正则表达式。我收到带有您的示例数据和正则表达式的 NO MATCH
  • 可以分享一份样本日志吗?
  • 贪婪也是另外一回事。最后你不需要+。好吧,一切都很好here
  • 不能使用 /g - 我想我可以用 (regex)+ 覆盖多个匹配项
  • no (regex)+ 只是意味着您的正则表达式模式数学化并且可以匹配更多时间在前面的后面。 (abc)+ 将匹配 "abc", "abcabc" 但不匹配 "abcdefabc" 或 "abc def abc" +

标签: regex templates rsyslog


【解决方案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"

【讨论】:

  • 太糟糕了,没有匹配,全局或类似的东西,你必须重复才能得到你想要的 - 但它工作得很好,非常感谢。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多