pztrn's wiki
You are here: start » software » apache » unique_ips_calculation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

software:apache:unique_ips_calculation [2021/01/04 09:04]
pztrn created
software:apache:unique_ips_calculation [2021/08/23 01:37]
Line 1: Line 1:
-====== Подсчитываем уникальные адреса в логах Apache ====== 
  
-Сидел я, значит, сидел, никого не трогал, вдруг смотрю – кто-то у меня во весь мой канал что-то качает. Смотрю логи – какая-то германщина с меня рекурсивно качает музыку. Ну и тут мне пришла идея накатать скриптец, который «выдирает» из логов уникальные IP, находит PTR, считает количество вхождений: 
- 
-<code> 
-#!/usr/bin/python2 
-   
-import os, sys, commands, operator 
-   
-ips = {} 
-rawips = [] 
-LOGFILE = "/var/log/httpd/pztrn.ru-access_log" 
-LINES = 0 
-SHOW_TOP = 20 
-   
-if LINES == 0: 
-    output = commands.getoutput("cat %s | awk {' print $1 '}" % (LOGFILE)).split("\n") 
-else: 
-    output = commands.getoutput("cat %s | tail -n %s | awk {' print $1 '}" % (LOGFILE, LINES)).split("\n") 
-ipscount = len(output) 
-curip = 1 
-   
-for ip in output: 
-    sys.stdout.write("\rProcessing: %s/%s ips" % (curip, ipscount)) 
-    sys.stdout.flush() 
-    if ip not in rawips: 
-        ptr = commands.getoutput(" host -t PTR " + ip) 
-        ips[ip] = {} 
-        ips[ip]["ptr"] = ptr.split(" ")[-1:][0] 
-        ips[ip]["count"] = 1 
-        rawips.append(ip) 
-    else: 
-        ips[ip]["count"] += 1 
-    curip +=1 
-   
-print "\nSorting...\n" 
-sorted_ips = sorted(ips.iteritems(), key=operator.itemgetter(1), reverse=True) 
-   
-showed = 1 
-for data in sorted_ips: 
-    if SHOW_TOP != 0: 
-        if showed == SHOW_TOP: 
-            exit() 
-        print """%s, PTR: %s, Count: %s""" % (data[0], data[1]["ptr"], data[1]["count"]) 
-        showed += 1 
-    else: 
-        print """%s, PTR: %s, Count: %s""" % (data[0], data[1]["ptr"], data[1]["count"]) 
-</code> 
- 
-Вывод будет таков: 
-<code> 
-[ /home/pztrn/bin ] % ./apache-ips.py 
-Processing: 15120/15120 ips 
-Sorting... 
-   
-66.249.66.169, PTR: crawl-66-249-66-169.googlebot.com., Count: 2771 
-66.249.66.203, PTR: crawl-66-249-66-203.googlebot.com., Count: 2436 
-87.250.253.243, PTR: spider-87-250-253-243.yandex.com., Count: 1728 
-66.249.72.205, PTR: crawl-66-249-72-205.googlebot.com., Count: 846 
-84.157.180.23, PTR: p549DB417.dip.t-dialin.net., Count: 590 
-127.0.0.1, PTR: 3(NXDOMAIN), Count: 580 
-66.249.72.217, PTR: crawl-66-249-72-217.googlebot.com., Count: 536 
-66.249.66.68, PTR: crawl-66-249-66-68.googlebot.com., Count: 479 
-66.249.66.182, PTR: crawl-66-249-66-182.googlebot.com., Count: 432 
-95.108.158.235, PTR: imparser05.yandex.ru., Count: 409 
-66.249.66.10, PTR: crawl-66-249-66-10.googlebot.com., Count: 328 
-66.249.66.84, PTR: crawl-66-249-66-84.googlebot.com., Count: 231 
-66.249.72.212, PTR: crawl-66-249-72-212.googlebot.com., Count: 148 
-66.249.72.232, PTR: crawl-66-249-72-232.googlebot.com., Count: 112 
-::1, PTR: localhost., Count: 107 
-66.249.66.140, PTR: crawl-66-249-66-140.googlebot.com., Count: 98 
-85.12.199.122, PTR: 3(NXDOMAIN), Count: 97 
-209.85.238.228, PTR: rate-limited-proxy-209-85-238-228.google.com., Count: 96 
-209.85.238.162, PTR: rate-limited-proxy-209-85-238-162.google.com., Count: 86 
-</code> 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International