문서

문서

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

관련 정보