Регулярное выражение Graylog извлекает первый действительный адрес Mac в сообщении

Я пытаюсь извлечь первый действительный общий MAC-адрес из нескольких разных записей сообщений в Graylog. Я могу сделать это с помощью разных экстракторов Grok, но я хочу сделать это с помощью Regex, чтобы я мог выполнять преобразования на Mac во все строчные буквы. Ниже приведены некоторые примеры сообщений и шаблоны Grok, которые работают.

Вопрос: как мне преобразовать эти экстракторы Grok в регулярное выражение и есть ли одно регулярное выражение, которое будет работать во всех 4 примерах? По сути, регулярному выражению просто нужно сопоставить первый действительный MAC-адрес в каждой строке и извлечь его.

Пример 1: Equinox: *spamApTask1: 20 марта 15:26:04.033: #CAPWAP-3-ECHO_ERR: capwap_ac_sm.c:7019 Не получен ответ пульса; АП: 00:3а:9а:48:9б:40

Пример 2: Equinox: *spamReceiveTask: 17 марта 12:34:39.264: #CAPWAP-3-DTLS_CONN_ERR: capwap_ac.c:934 00:3a:9a:30:f5:90: DTLS-соединение не найдено для точки доступа 192.168.99.74 (43456 ), Контроллер: 192.168.99.2 (5246) отправить пакет

Sample3: Equinox: *spamApTask1: 22 марта 08:35:14.562: #LWAPP-4-SIG_INFO1: spam_lrad.c:44474 Информация о подписи; AP 00:14:1b:61:f8:40, тревога включена, стандартный сигнал NULL, зонд соотв. 1, приоритет отслеживания 2, совпадения 1, слот 0, канал 1, MAC-адрес с наибольшим количеством нарушений 00:00:00:00:00 :00 #yes но должен сделать Mac строчными буквами

Пример 4: Equinox: *idsTrackEventTask: 22 марта 08:40:13.816: #WPS-4-SIG_ALARM_OFF: sig_event.c:656 AP 00:14:1B:61:F8:40 : Тревога ВЫКЛ, стандартный сигнал NULL, зонд соответственно 1 , track=per-Mac preced=2 совпадения=1 слот=0 канал=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}

person Williamk    schedule 22.03.2020    source источник


Ответы (1)


Вы можете создать шаблон, который соответствует 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]

Демо здесь.

person Alex    schedule 22.03.2020
comment
Это отлично работает на демо-сайте, но не работает в Graylog. Насколько я понимаю, Graylog использует форму Java Regex. Итак, есть некоторые незначительные различия в синтаксисе, с которыми я борюсь. - person Williamk; 23.03.2020
comment
Чтобы быть более конкретным, Graylog использует Java Pattern Regex? - person Williamk; 23.03.2020