Advertisement
Guest User

Untitled

a guest
May 4th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 KB | None | 0 0
  1. import os       #importiert os Befehle
  2. from collections import Counter     #Importiert den Counter
  3.  
  4.  
  5. def parseLine(line):        # Funktion paseLine()
  6.     lineSplit = line.split()        #Splittet die line in eine Liste
  7.     if lineSplit[len(lineSplit) - 1] == "-":        #Guckt ob die Byte Anzahl ein "-" ist
  8.         lineSplit[len(lineSplit) - 1] = 0       #Ersetzt das "-" durch eine 0
  9.     lineSplit[len(lineSplit) - 1] = int(lineSplit[len(lineSplit) - 1])      #Wandelt die Byte Anzahl in ein int um
  10.     lineSplit[len(lineSplit) - 2] = int(lineSplit[len(lineSplit) - 2])      #Wandelt den Fehlercode in ein Int um
  11.     return lineSplit    #Gibt eine Liste zurück
  12.  
  13.  
  14. def output(diction):
  15.     outputtext = ""
  16.     for key in diction:
  17.         outputtext += str(key) + ":\t" + str(diction[key])
  18.         outputtext += "\n"
  19.     return outputtext
  20.  
  21.  
  22. def parseLog(iterable, outfile):
  23.     with open(iterable) as serverLog, open(outfile, "w") as statistic:
  24.         lines = 0
  25.         errors = {}
  26.         bytes = 0
  27.         kbytes = 0
  28.         mbytes = 0
  29.         datas = []
  30.         funktions = []
  31.         ipdaten = {}
  32.  
  33.         for line in serverLog:
  34.             lines += 1
  35.             lineSplit = parseLine(line)
  36.             datas.append(lineSplit[len(lineSplit) - 4])
  37.             bytes += lineSplit[len(lineSplit) - 1]
  38.             funktions.append(lineSplit[5])
  39.  
  40.             if lineSplit[len(lineSplit) - 2] not in errors:
  41.                 errors[lineSplit[len(lineSplit) - 2]] = 1
  42.             else:
  43.                 errors[lineSplit[len(lineSplit) - 2]] += 1
  44.  
  45.             if lineSplit[0] not in ipdaten:
  46.                 ipdaten[lineSplit[0]] = []
  47.                 ipdaten[lineSplit[0]].append(lineSplit[len(lineSplit) - 4])
  48.             else:
  49.                 ipdaten[lineSplit[0]].append(lineSplit[len(lineSplit) - 4])
  50.  
  51.         kbytes = bytes / 1000
  52.         mbytes = kbytes / 1000
  53.         statistic.write("Zeilen:\t" + str(lines) + "\n\nAnzahl der Funktionen:\n" + str(Counter(funktions)) +
  54.                              "\n\nAnzahl der gelieferten Bytes:\t" + str(bytes) + " Bytes / " + str(kbytes) + " Kilobytes / " + str(mbytes) + " Megabytes\n\nAnzahl der Zahlmeldungen:\n" +
  55.                              output(errors) +
  56.                              "\nHaufigkeit der Angeforderten Daten:\n" + str(Counter(datas).most_common(1)) + "\n\nIp haben Angefordert:\n" +
  57.                              output(ipdaten))
  58.  
  59. finish = False      #Setzt finish auf false
  60.  
  61. while not finish:       #solange finish nicht true ist
  62.     print("Apache Log Parser\n")        #Gibt den Namen aus
  63.     value = int(input("Wie viele Datein wollen sie einlesen?\t"))       #Fragt nach dem wert, wie viele datein eigelesen werden soll
  64.     while value > 0:        #solange value groeßer als 0 ist
  65.         logName = input("Bitte geben Sie den Lognamen ein:\t")      #Es wird nach dem lognamen gefragt
  66.         with open(logName) as file, open("tmpfile.txt", "w") as tmp:
  67.             for i in file:
  68.                 tmp.write(i)
  69.         print("")
  70.         value -= 1      #vale wird um 1 verringert
  71.     logOutput = input("Bitte geben Sie ein Ausgabe Namen ein:\t")       #Es wird nach dem ausgabenamen gefragt
  72.     parseLog("tmpfile.txt", logOutput)      #die funktion parselog wird aufgerufen
  73.     finish = True       #finish wird auf true gesetzt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement