Nginx 로그 파일 접근 IP 통계
3299 단어 linux
Nginx 접근 로그 파일 내용 은 다음 과 같 습 니 다.
10.9.40.134 - - [01/Aug/2016:06:29:42 +0800] "POST / HTTP/1.1" 302 0 "-" "python-requests/2.4.3 CPython/2.7.9 Linux/3.16.0-4-amd64"
10.9.40.134 - - [01/Aug/2016:06:29:42 +0800] "GET /monitor.html?id=d00 HTTP/1.1" 200 8472 "-" "python-requests/2.4.3 CPython/2.7.9 Linux/3.16.0-4-amd64"
레 퍼 런 스
어떻게 명령 행 을 통 해 방문 로그 의 ip 수 를 통계 하고 배열 합 니까?
linux sort, uniq, cut, wc 명령 상세 설명
Python
해결 방안
awk sort
$1 은 빈 칸 을 분할 문자 로 하 는 첫 번 째 일치 항목, 즉 파일 의 ip 주 소 를 표시 합 니 다.sort 를 사용 하여 결과 정렬, 유 니 크 - c 기술 을 진행 합 니 다. 마지막 으로 sort - n 은 '숫자' 로 정렬 하고 통 계 된 방문 횟수 에 따라 정렬 합 니 다.
awk '{print $1}' access.log.1 |sort|uniq -c|sort -n
awk for
기본 변 수 는 0 입 니 다. 각 줄 의 $1 을 key, cnct 배열 + 로 하여 ip 의 수 를 실현 합 니 다.계산 이 끝 난 후 엔 디.그리고 결 과 를 인쇄 하고 마지막 으로 sort - n 은 '숫자' 로 정렬 합 니 다.
awk '{cnt[$1]++;}END{for(i in cnt){printf("%s\t%s
", cnt[i], i);}}' access.log.1|sort -n
Python
ip 주소 와 일치 하 는 정규 표현 식 을 사용 하여 ip 이 나타 나 는 횟수 를 사전 으로 저장 합 니 다.
import re
mydict = {}
with open('/var/log/nginx/access.log.1') as f:
for line in f:
match = re.match(r'([0-9]{1,3}\.){3}[0-9]{1,3}', line)
if match:
ip = match.group()
if ip in mydict.keys():
mydict[ip] += 1
else:
mydict[ip] = 1
print mydict
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.