Lisatud bin kaust näidistega
This commit is contained in:
51
bin/top5
Executable file
51
bin/top5
Executable file
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/python
|
||||
# encoding: utf-8
|
||||
|
||||
import argparse
|
||||
import re
|
||||
from datetime import datetime, timedelta
|
||||
import sys
|
||||
from collections import Counter
|
||||
|
||||
hits = Counter() # IP-d kust tuldi
|
||||
urls = Counter() # URL-id mida külastati
|
||||
agents = Counter() # User agent mida kasutati külastamisel
|
||||
|
||||
RE_LOG_ENTRY = "(?P<remote_addr>.+?) - (?P<username>.+?) \[(?P<timestamp>.+?) \+\d\d\d\d\] \"(?P<verb>[A-Z]+) (?P<path>.+) HTTP/1.[01]\" (?P<status>\d+) (?P<size>\d+) \"(?P<referrer>.+?)\" \"(?P<agent>.+?)\""
|
||||
|
||||
for line in sys.stdin:
|
||||
m = re.match(RE_LOG_ENTRY, line)
|
||||
if not m:
|
||||
sys.stderr.write("Ei suutnud parsida rida: %s" % line)
|
||||
continue
|
||||
|
||||
# Ignoreeri localhostist ja sisevõrgust pärinevaid päringuid (a'la nagios)
|
||||
if m.group("remote_addr").startswith("127.") or m.group("remote_addr").startswith("192.168."):
|
||||
continue
|
||||
|
||||
# Jäta vahele OPTIONS päringud
|
||||
if m.group("verb") not in ("GET", "POST"):
|
||||
continue
|
||||
|
||||
# Jäta vahele botid ja otsingumootorid
|
||||
if re.search("(crawler|spider|Nuhk|Googlebot|yahoo|yandex)", m.group("agent")):
|
||||
continue
|
||||
|
||||
dt = datetime.strptime(m.group("timestamp"), "%d/%b/%Y:%H:%M:%S")
|
||||
hits[m.group("remote_addr")] += 1
|
||||
urls[m.group("path")] += 1
|
||||
agents[m.group("agent")] += 1
|
||||
|
||||
|
||||
print "Top 5 enim külastatud URL-i veebiserveris:"
|
||||
for path, count in urls.most_common(5):
|
||||
sys.stdout.write("% 9d %s\n" % (count, path))
|
||||
print
|
||||
print "Top 5 enim külastusi teinud IP aadressid:"
|
||||
for remote_addr, count in hits.most_common(5):
|
||||
sys.stdout.write("% 9d %s\n" % (count, remote_addr))
|
||||
print
|
||||
print "Top 5 enim kasutatud veebilehitsejad/OS-id:"
|
||||
for user_agent, count in agents.most_common(5):
|
||||
sys.stdout.write("% 9d %s\n" % (count, user_agent))
|
||||
|
||||
Reference in New Issue
Block a user