Извлечение исходного IP из файлов журнала - PullRequest
0 голосов
/ 23 июня 2019

Я хочу извлечь "srcip = x.x.x.x" из файла журнала в bash. мой файл журнала выглядит так:

2019:06:23-17:50:03 myhost ulogd[5692]: id="2021" severity="info" sys="SecureNet" sub="packetfilter" name="Packet dropped (GEOIP)" action="drop" fwrule="60019" initf="eth0" srcmac="3c:1e:04:92:6f:fb" dstmac="00:50:56:97:7c:af" srcip="185.53.91.50" dstip="192.168.50.10" proto="6" length="44" tos="0x00" prec="0x00" ttl="235" srcport="54522" dstport="5038" tcpflags="SYN" 

Я написал awk '{print $15}' для извлечения srcip, но проблема в том, что позиция srcip не одинакова в каждой строке. Как я могу извлечь srcip=x.x.x.x без позиции этого?

Ответы [ 3 ]

1 голос
/ 24 июня 2019

С любым sed в любой оболочке на каждой коробке UNIX:

$ sed -n 's/.*\(srcip="[^"]*"\).*/\1/p' file
srcip="185.53.91.50"
0 голосов
/ 24 июня 2019

An awk версия

awk -F"srcip=" '{split($2,a," ");print FS a[1]}' file
srcip="185.53.91.50"

Разделить строку по ключевому слову, а затем получить следующее поле после разделения.

0 голосов
/ 23 июня 2019

Следующая команда обеспечивает ожидаемый результат

grep -o -P 'srcip="(\d{1,3}[.]){3}\d{1,3}"' log

Параметр o предназначен для печати только соответствующих деталей.Параметр P должен использовать perl-совместимые регулярные выражения.Регулярное выражение соответствует srcip=<ipv4>, а log - это имя файла, из которого вы хотите извлечь контент.

Вот ссылка на regex101 для объяснения регулярного выражения: https://regex101.com/r/hjuZlM/2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...