понедельник, 18 мая 2020 г.

[Fast] Splunk. "Коварный" оператор rex

Приветствую, уважаемый читатель!

Ещё один пост из новой рубрики Fast. Я думаю все мы часто используем оператор rex, чтобы что-то откуда-то достать и обычно SPL-запрос у меня им заканчивался (или table или stats или timechart), но оказалось, если он не последний, то есть нюанс. Поехали.



Задача:


Превратить это -


Вот в это (для дальнейшего построчного сравнения) -


Неправильное решение


source="/var/log/masscan/*"
         | rex field=Port "(?P<Port_Num>\d{1,5})\/(?P<Port_State>.{1,10})\/"
         | sort Port_Num
         | mvcombine Port_Num
         | eval All_port=mvjoin(Port_Num,",")
         | table IP,All_port


Имеем :( 



Правильное решение


source="/var/log/masscan/*"
        | rex field=Port "(?P<Port_Num>\d{1,5})\/(?P<Port_State>.{1,10})\/"
        | table IP,Port_Num
        | sort Port_Num
        | mvcombine Port_Num
        | eval All_port=mvjoin(Port_Num,",")
        | table IP,All_port

Имеем :)



Вместо длинного объяснения


Чтобы корректно использовать поименованные данные (Port_Num) извлеченные оператором rex необходимо в явном виде указать новое поле (Field) в операторе table. Такая же история, кстати, при объединении запросов через join.


Всем удачного использования!



Комментариев нет:

Отправить комментарий