nginx access log 에서 ip 추출해보기

ByoungGeol Cho·2022년 1월 28일
0

2022년

목록 보기
1/1

nginx access log 에서 unique한 ip 목록을 추출할 일이 있었음.

파일을 가져와서 엑셀에 붙여서 잘 분리해서 중복 제거를 해도 되지만,
서버내에서 작업을 해보기로 함.

sed, awk, sort, uniq 를 이용하면 ip들을 뽑을 수 있음.

로그는 아래와 같은 형식이었고 IP는 [] 로 둘러 쌓여져 있음.

[27/Jan/2022:10:03:49 +0900][0.029][xxx.xxx.xx.xxx][200] "GET /api/xxx/vx.x/xxxxxx/xxxx?orgId=xxxx HTTP/1.1"

원리가는 간단 함.
awk 가 공백을 위주로 토큰을 만들수 있기 때문에

1. 우선 sed로 "][" 를 공백을 만들어 줌.

sed 's/\]\[/ /g'
[27/Jan/2022:10:03:49 +0900 0.029 xxx.xxx.xx.xxx 200] "GET /api/xxx/vx.x/xxxxxx/xxxx?orgId=xxxx HTTP/1.1"

2. awk 에서 4번째 것을 출력

awk '{print $4}'
xxx.xxx.xx.xxx

3. sort 하고 uniq 를 수행

sort | uniq

sort 와 uniq 명령어를 수행하면 중복이 제거가 됨.

결론

cat access.log-20220128 | sed 's/\]\[/ /g' | awk '{print $4}' | sort | uniq

0개의 댓글