로그 파일에서 IP 주소를 추출하여 다른 파일에 나열합니다.

로그 파일에서 IP 주소를 추출하여 다른 파일에 나열합니다.

나는 허니팟을 설정하고 수많은 무차별 대입 공격의 소스를 분석하고 싶었습니다. 모든 IP 주소를 추출하여 목록 형식으로 다른 파일에 추가하고 싶습니다. 그러면 스크립트는 cron 작업의 일부가 되고 목록 파일 맨 아래에 고유 IP를 추가합니다.

로그 파일에서 IP 주소를 추출하여 다른 파일에 나열하려면 어떻게 해야 합니까?

답변1

가장 쉬운 방법은 아마도 간단한 grep일 것입니다.

grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /path/to/sourcefile > output.txt

그러면 소스 파일에서 모든 IP 주소가 추출되어 개행 문자로 구분되어 출력.txt에 기록됩니다.

답변2

나는 다음과 같은 것을 사용할 것입니다 :

perl -MRegexp::Common -wnE 'say for /$RE{net}{IPv4}/g' log-file > another-file

Regexp::Common운영 체제에 Perl 모듈이 제공되지 않는 경우 Perl 모듈을 설치해야 합니다. 이 -n스위치를 사용하면 입력 파일을 한 줄씩 반복한 다음 각 IP 주소를 반복하여 각 IP 주소를 별도의 줄에 인쇄합니다. 모듈 Regexp::Common은 IP 주소와 일치하는 패턴을 갖게 되며, 이는 $RE{net}{IPv4}.

답변3

나는 awk를 사용하여 IP 주소를 "i"라는 연관 배열에 넣고 일치 항목을 인덱스로 사용했습니다. 그런 다음 색인을 인쇄하여 중복 데이터를 제거합니다.

awk 'match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {i[substr($0,RSTART,RLENGTH)]=1}END{for(ip in i){printf("%s\n", ip)}}' sourcefile

관련 정보