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