0

我正在尝试从 Graylog 中的几个不同消息条目中提取第一个有效的公共 mac 地址。我可以用不同的 Grok Extractor 来做,但我想用 Regex 来做,这样我就可以在 Mac 上转换为所有小写字母。下面是一些示例消息和有效的 Grok 模式。

问题,我如何将这些 Grok 提取器转换为正则表达式,或者是否有一个正则表达式适用于所有 4 个示例?基本上,正则表达式只需要匹配每个字符串中的第一个有效 MAC 地址并提取它。

示例 1:Equinox:* spamApTask1:3 月 20 日 15:26:04.033:#CAPWAP-3-ECHO_ERR:capwap_ac_sm.c:7019 未收到心跳回复;美联社:00:3a:9a:48:9b:40

示例 2:Equinox:*spamReceiveTask:3 月 17 日 12:34:39.264:#CAPWAP-3-DTLS_CONN_ERR:capwap_ac.c:934 00:3a:9a:30:f5:90:未找到 AP 192.168.99.74 的 DTLS 连接(43456 )、控制器:192.168.99.2(5246)发送数据包

Sample3:Equinox:* spamApTask1:Mar 22 08:35:14.562:#LWAPP-4-SIG_INFO1:spam_lrad.c:44474 签名信息;AP 00:14:1b:61:f8:40,警报开启,标准 sig NULL 探测响应 1,跟踪 per-Macprecedence 2,命中 1,插槽 0,通道 1,最有问题的 MAC 00:00:00:00:00 :00 #yes 但必须将 Mac 设为小写

示例 4:Equinox:*idsTrackEventTask:3 月 22 日 08:40:13.816:#WPS-4-SIG_ALARM_OFF:sig_event.c:656 AP 00:14:1B:61:F8:40:警报关闭,标准 sig NULL 探针响应 1 , track=per-Mac preced=2 hits=1 slot=0 channel=1 是但必须使 Mac 小写

Sample1 Grok pattern:%{GREEDYDATA}AP: {COMMONMAC:WLC_APBaseMac}
Sample2 Grok pattern:%{GREEDYDATA}capwap_ac.c:934 %{COMMONMAC:WLC_APBaseMac}
Sample3 Grok pattern:%{GREEDYDATA}AP %{COMMONMAC:WLC_APBaseMac}
Sample4 Grok pattern:%{GREEDYDATA}AP %{COMMONMAC:WLC_APBaseMac}
4

1 回答 1

0

您可以创建一个模式,它匹配 5 组 2 个十六进制数字后跟一个分号,然后是最后第 6 组 2 个十六进制数字:

(?i)(?:[0-9a-f]{2}:){5}[0-9a-f]{2}

演示在这里。在(?i)开始时使搜索不区分大小写。

更新

如果上面的正则表达式在 Graylog 中不起作用,那么您可以尝试它的非常基本的形式,其中所有量词和字符集都被扩展:

[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]:[0-9a-fA-F][0-9a-fA-F]

演示在这里

于 2020-03-22T23:31:52.413 回答