Ich will mit AWStats eine Auswertung getrennt nach Bundesländern machen

Statt aufwändig den Quelltext der Auswertungssoftware (z.B. von http://awstats.sourceforge.net oder http://piwik.org) zu verändern, kann man auch regelmäßig (z.B. per https://de.wikipedia.org/wiki/Cron) die archivierten Logfiles mit Hilfe von https://www.maxmind.com/app/geolite nach zu untersuchender Region aufsplitten und die Analyse anschließend für jedes Bundesland einzeln durchführen. Zur Kontrolle der Plausibilität der Daten kann man dann nebenbei auch noch alle IP-Adressen der DTAG-DIAL* Netze ausfiltern.

   1 #!/usr/bin/python
   2 
   3 import sys, string, re, GeoIP
   4 
   5 #
   6 # GeoLiteCity.dat von MaxMind im UTF8-Modus laden
   7 #
   8 gi = GeoIP.open("/usr/share/GeoIP/GeoIP.dat",GeoIP.GEOIP_STANDARD)
   9 gi.set_charset(GeoIP.GEOIP_CHARSET_UTF8);
  10 
  11 for line in sys.stdin.readlines():
  12         words = string.split(line)
  13         gir = gi.record_by_name(words[0])
  14         #
  15         # Den Hostname (erstes Wort) pruefen
  16         #
  17         if gir != None:
  18             if gir['region_name'] != None:
  19                 if gir['country_code'] == 'DE':
  20                     #
  21                     # Ab hier nur noch deutsche IPs, also ins Logfile schreiben
  22                     #
  23                     f = open('Deutschland.logfile','a')
  24                     f.write(line)
  25                     f.close()
  26                     #
  27                     # Bundesland holen 
  28                     #
  29                     bundesland = gir['region_name']
  30                     #
  31                     # Zeile ins Logfile des Bundeslandes schreiben
  32                     #
  33                     f = open(bundesland + '.logfile','a')
  34                     f.write(line)
  35                     f.close()
  36                     #
  37                     # T-DSL (= Privatkunde via Telekom IP Backbone) entspricht diesem Muster:
  38                     #
  39                     # T-Online: http://www.robtex.com/dns/dip.t-dialin.net.html
  40                     # Telekom Reseller: http://www.robtex.com/dns/dip0.t-ipconnect.de.html
  41                     # Marktanteile: http://www.dslweb.de/breitband-report-deutschland-q1-2012.php
  42                     #
  43                     # Linken Teil des Hostnames vor dem erstem Vorkommen von '.' verwerfen
  44                     # und Rest auf dip0.t-ipconnect.de oder dip.t-dialin.net pruefen
  45                     #
  46                     tdsl = re.split('\.', words[0], 1)[1]
  47                     if tdsl ==  'dip0.t-ipconnect.de' or tdsl == 'dip.t-dialin.net':
  48                         f = open('TDSL-Deutschland.logfile','a')
  49                         f.write(line)
  50                         f.close()
  51                         f = open('TDSL-' + bundesland + '.logfile','a')
  52                         f.write(line)
  53                         f.close()

helpdesk/bundesland (zuletzt geändert am 2012-08-21 05:58:57 durch heiner)