Многострочное чтение журнала из файла журнала - PullRequest
0 голосов
/ 30 сентября 2019

Я читаю журналы из файла журнала, который записывает многострочный тип. Читая QRadar, собирающий две записи и принимающий его как один журнал.

Я описал начальный и конечный шаблон строки журнала при добавлении источника журнала в QRadar как:

  • Начальный шаблон RegEx: ^(\d{7})\,

  • Конечный шаблон RegEx: (\d{2}:\d{2}:\d{2})$

Я должен был прочитать журналы как:

1158896,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:01:15,Security Management,Log in to the server,Network Management,Succeeded,User name: someuser,2019-09-29 03:01:15
1158897,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:03:16,Security Management,Log out the server,Network Management,Succeeded,"User name: someuserOnline duration: 0 day(s) 0 hour(s) 2 minute(s) 1 second(s)",2019-09-29 03:03:16

Но я получаю некоторые из них в сборе, например:

1158896,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:01:15,Security Management,Log in to the server,Network Management,Succeeded,User name: someuser,2019-09-29 03:01:151158897,someuser,Inner User,Minor,10.6.130.11,2019-09-29 03:03:16,Security Management,Log out the server,Network Management,Succeeded,"User name: someuserOnline duration: 0 day(s) 0 hour(s) 2 minute(s) 1 second(s)",2019-09-29 03:03:16

Вот записи regex101.com моего начального и конечного шаблона RegEx.

https://regex101.com/r/2IfMR7/3

https://regex101.com/r/2IfMR7/4

Как видите, в regex101.com он работает нормально. Почему QRadar читает их как единое целое?

1 Ответ

0 голосов
/ 30 сентября 2019

Вы (или qradar) можете использовать жадный квантификатор в сочетании с многострочным символом захвата.

Если вы делаете что-то вроде этого: ^(\d{7})\,(?:\n|.)*(\d{2}:\d{2}:\d{2})$, где центральная группа (?:\n|.)* или любая похожая фраза, совпадающая в нескольких строках, жадный оператор * означает, что он попытается найти совпадение изсамые первые 7 цифр до самой последней отметки времени на всей странице журнала , игнорируя начальный и конечный якоря. Попробуйте вместо этого использовать *?;? делает его нежадным, поэтому он останавливается на первой отметке времени.

Сравните: жадный против не жадный .

...