文件

文件

我有一个服务器日志,其中包含sourceip="1.1.1.1"和等数据username="aaaa"。需要一个命令来 grep 整个日志文件并搜索来自相同 IP 地址但使用不同用户名的多个登录信息

操作系统是 Centos,日志如下所示:

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

我想让每个 IP 尝试用户名。

答案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

相关内容