Dienstag, 26. Oktober 2010

 

ruby-loganalyse (PR: 5AD, 5BD)

Diverse Server (z.B. Webserver) tragen verschiedene Informationen in ein Logfile ein. Webserver loggen normalerweise jeden Zugriff auf die Website: IP-Adresse, Seite, Browser, Betriebssystem.
Bei Webservern ist es oft interessant, welche Browser oder Betriebssysteme auf der Clientseite verwendet werden.
Schreiben Sie ein ruby-Programm loganalyse.rb, welches ein (Apache-)Logfile einliest und folgende Information ermittelt:
  1. Liste der Browser und deren Häufigkeiten, absteigend sortiert nach Häufigkeit, prüfen Sie dabei folgende Browser(strings) ohne Berücksichtigung der Groß-/Kleinschreibung:
    "Firefox", "Opera", "Mozilla", "Netscape", "MSIE"
  2. Liste der Betriebssysteme und deren Häufigkeiten, absteigend sortiert nach Häufigkeit, prüfen Sie dabei folgende Betriebsysteme(strings) ohne Berücksichtigung der Groß-/Kleinschreibung:
    "Linux", "Windows", "Mac"
  3. Liste der Subnetze (xx.xx.xx.*) mit deren Häufigkeiten, absteigend sortiert nach Häufigkeit (Verwenden Sie zur Unterscheidung der Netze einfach die ersten drei Teile der IP-Adresse am Zeilenanfang).
  4. Liste der IP-Adressen mit deren Häufigkeiten, absteigend sortiert nach Häufigkeit.
  5. Zugriffe pro Tag mit den Häufigkeiten, sortiert nach Datum (sortieren Sie einfach die Datumstrings – z.B. 27/May/2007).
Die nötigen Informationen sind im Klartext im Logfile enthalten. Am Anfang jeder Zeile steht die IP-Adresse (z.B. 66.249.73.115). Die weiteren Informationen bekommt man durch (Sub-)Stringvergleich bzw. reguläre Ausdrücke.
Ausschnitt aus einem Logfile ( bedeutet Zeilenumbruch):
66.249.73.115 - - [27/May/2007:06:50:10 +0200] "GET /r.simon/html/Unterlagen/mysql_de/mysql-2.html HTTP/1.1" 200 3358 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.73.115 - - [27/May/2007:06:50:15 +0200] "GET /d03011/Art_of_War_Forum/board.php?boardid=17&sid=c8422d9b444a6ca37c37194516d35532 HTTP/1.1" 200 6297 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
81.52.143.15 - - [27/May/2007:06:51:11 +0200] "GET /robots.txt HTTP/1.1" 404 379 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (http://www.voila.com/)"
81.52.143.15 - - [27/May/2007:06:51:12 +0200] "GET /d00050/http:/213.133.115.133/p/www.alpennic.com/zp_at.html HTTP/1.1" 403 550 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 (http://www.voila.com/)"
66.249.73.115 - - [27/May/2007:06:52:02 +0200] "GET /d03011/Art_of_War_Forum/thread.php?postid=227 HTTP/1.1" 200 20545 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
193.170.149.156 - - [27/May/2007:06:52:24 +0200] "GET / HTTP/1.0" 200 209 "-" "check_http/1.99 (nagios-plugins 1.4.6)"
Laden Sie sich eine Beispieldatei von http://edvowww.htlwrn.ac.at/HP/blosxom/C/beispiele/access.log herunter (Achtung 14MB).
Schreiben Sie eine Klasse LogAnalyse mit einem Konstruktor, dem der Dateiname übergeben wird. In der Klasse muss eine Methode implementiert werden, welche obige Aufgabenstellung löst.
Im Hauptprogramm muss ein Objekt der Klasse angelegt werden und diese Methode aufgerufen werden. Der Dateiname kommt aus der Kommandozeile.

Hinweise:

Verwenden Sie einen Hash zum Speichern der Zählinformation.
Verwenden Sie die Sortiermethode sort von Arrays, um die entsprechende Liste zu erzeugen.
Abgabe am Ende der zweiten Übungsstunde:
Nennen Sie das Projekt 5xd-name-ruby-logfile-i
Dabei gilt:
Geben Sie auch das Ergebnis als Textdatei innerhalb des Projekts ab: ergebnis.txt. Das Projekt enthält also 2 Dateien:
  1. loganalyse.rb
  2. ergebnis.txt

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]