Поиск журналов Linux на основе исходного IP-адреса и имени пользователя.

У меня есть журналы сервера, которые содержат такие данные, как sourceip="1.1.1.1"и имя пользователя="аааа". Нужна команда для поиска всего файла журнала и поиска нескольких входов в систему с одного и того же IP-адреса, но с разными именами пользователей

ОС - Centos, и журналы выглядят так:

2020-06-22T07:46:04+01:00 srcip=1.1.1.1 user="abcdefg"

и я хотел бы, чтобы имя пользователя (имена) пробовал каждый ИП.

-1
23.06.2020, 14:10
1 ответ

Использование :

Файл

$ cat file
2020-06-22T07:46:04+01:00 srcip=1.1.1.1 user="abcdefg"
2020-06-22T07:46:04+01:00 srcip=1.1.1.1 user="abcdefy"
2020-06-22T07:46:04+01:00 srcip=1.1.1.1 user="abcdefz"
2020-06-22T07:46:04+01:00 srcip=1.1.1.3 user="xxx"

Команда

perl -MRegexp::Common -lne '
    push @{ $h->{$1} }, $2 if /srcip=($RE{net}{IPv4})\s+user="(\w+)"/;
    END{print "$_=". join " ", @{ $h->{$_}} for keys %$h}
' file

Из трубы:

zgrep srcip <log_file> |
    perl -MRegexp::Common -lne '
        push @{ $h->{$1} }, $2 if /srcip=($RE{net}{IPv4})\s+user="(\w+)"/;
        END{print "$_=". join " ", @{ $h->{$_}} for keys %$h}
    '

Выход

1.1.1.3=xxx
1.1.1.1=abcdefg abcdefy abcdefz
0
18.03.2021, 23:25

Теги

Похожие вопросы