Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os #importiert os Befehle
- from collections import Counter #Importiert den Counter
- def parseLine(line): # Funktion paseLine()
- lineSplit = line.split() #Splittet die line in eine Liste
- if lineSplit[len(lineSplit) - 1] == "-": #Guckt ob die Byte Anzahl ein "-" ist
- lineSplit[len(lineSplit) - 1] = 0 #Ersetzt das "-" durch eine 0
- lineSplit[len(lineSplit) - 1] = int(lineSplit[len(lineSplit) - 1]) #Wandelt die Byte Anzahl in ein int um
- lineSplit[len(lineSplit) - 2] = int(lineSplit[len(lineSplit) - 2]) #Wandelt den Fehlercode in ein Int um
- return lineSplit #Gibt eine Liste zurück
- def output(diction):
- outputtext = ""
- for key in diction:
- outputtext += str(key) + ":\t" + str(diction[key])
- outputtext += "\n"
- return outputtext
- def parseLog(iterable, outfile):
- with open(iterable) as serverLog, open(outfile, "w") as statistic:
- lines = 0
- errors = {}
- bytes = 0
- kbytes = 0
- mbytes = 0
- datas = []
- funktions = []
- ipdaten = {}
- for line in serverLog:
- lines += 1
- lineSplit = parseLine(line)
- datas.append(lineSplit[len(lineSplit) - 4])
- bytes += lineSplit[len(lineSplit) - 1]
- funktions.append(lineSplit[5])
- if lineSplit[len(lineSplit) - 2] not in errors:
- errors[lineSplit[len(lineSplit) - 2]] = 1
- else:
- errors[lineSplit[len(lineSplit) - 2]] += 1
- if lineSplit[0] not in ipdaten:
- ipdaten[lineSplit[0]] = []
- ipdaten[lineSplit[0]].append(lineSplit[len(lineSplit) - 4])
- else:
- ipdaten[lineSplit[0]].append(lineSplit[len(lineSplit) - 4])
- kbytes = bytes / 1000
- mbytes = kbytes / 1000
- statistic.write("Zeilen:\t" + str(lines) + "\n\nAnzahl der Funktionen:\n" + str(Counter(funktions)) +
- "\n\nAnzahl der gelieferten Bytes:\t" + str(bytes) + " Bytes / " + str(kbytes) + " Kilobytes / " + str(mbytes) + " Megabytes\n\nAnzahl der Zahlmeldungen:\n" +
- output(errors) +
- "\nHaufigkeit der Angeforderten Daten:\n" + str(Counter(datas).most_common(1)) + "\n\nIp haben Angefordert:\n" +
- output(ipdaten))
- finish = False #Setzt finish auf false
- while not finish: #solange finish nicht true ist
- print("Apache Log Parser\n") #Gibt den Namen aus
- value = int(input("Wie viele Datein wollen sie einlesen?\t")) #Fragt nach dem wert, wie viele datein eigelesen werden soll
- while value > 0: #solange value groeßer als 0 ist
- logName = input("Bitte geben Sie den Lognamen ein:\t") #Es wird nach dem lognamen gefragt
- with open(logName) as file, open("tmpfile.txt", "w") as tmp:
- for i in file:
- tmp.write(i)
- print("")
- value -= 1 #vale wird um 1 verringert
- logOutput = input("Bitte geben Sie ein Ausgabe Namen ein:\t") #Es wird nach dem ausgabenamen gefragt
- parseLog("tmpfile.txt", logOutput) #die funktion parselog wird aufgerufen
- finish = True #finish wird auf true gesetzt
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement