Die Webseiten der Fachschaft Informatik am ERG Saalfeld
Analyse der logon.log
Aufgabe: Es soll eine Übersicht über die Nutzung des Schulnetzes erstellt werden.
Dazu soll das Login des Users, der Rechnername und das Datum und die Uhrzeit der Windows-Anmeldung in einer Tabelle ausgegeben werden.
Jede Anmeldung eines Nutzers unseres Schulnetzes an der Windows-Domäne wird in der Datei logon.log
gespeichert, wobei jede Zeile dieser Datei zu einer Anmeldung gehört. Diese Zeilen sind alle so aufgebaut wie in den folgenden 2 Beispielen:
Sep 3 08:48:32 alix Samba-prelogon: %u hkirmse %U hkirmse %a Vista %g teachers %G teachers %m ap09 %t 1409726912
bzw.
Sep 15 14:37:04 alix Samba-prelogon: %u mmustermann %U mmustermann %a WinXP %g students %G students %m pc12 %t 1410784624
Man kann diese Zeile so beschreiben:
1. |
|
der Monat mit 3 Buchstaben |
\w{3} |
14. |
|
ein Leerzeichen |
\s |
27. |
|
'%G' für Gruppe von %U |
%G |
2. |
|
ein oder zwei Leerzeichen |
\s{1,2} |
15. |
|
'%U' für Login-Anmeldung |
%U |
28. |
|
ein Leerzeichen |
\s |
3. |
|
der Tag (ein- oder zweistellig) |
\d{1,2} |
16. |
|
ein Leerzeichen |
\s |
29. |
|
die Gruppe des Users |
\w+ |
4. |
|
ein Leerzeichen |
\s |
17. |
|
das Login des Users |
\w+ |
30. |
|
ein Leerzeichen |
\s |
5. |
|
Die Uhrzeit |
\d\d:\d\d:\d\d |
18. |
|
ein Leerzeichen |
\s |
31. |
|
'%m' für Rechnername |
%m |
6. |
|
ein Leerzeichen |
\s |
19. |
|
'%a' für Client-BS |
%a |
32. |
|
ein Leerzeichen |
\s |
7. |
|
der Servernamen 'alix' |
alix |
20. |
|
ein Leerzeichen |
\s |
33. |
|
der Rechnername |
\w* |
8. |
|
ein Leerzeichen |
\s |
21. |
|
das Betriebssystem |
\w+ |
34. |
|
ein Leerzeichen |
\s |
9. |
|
der String 'Samba-prelogon:' |
\w+-\w+: |
22. |
|
ein Leerzeichen |
\s |
35. |
|
'%t' für 'Computerzeit' |
%t |
10. |
|
ein Leerzeichen |
\s |
23. |
|
'%g' für Gruppe von %u |
%g |
36. |
|
ein Leerzeichen |
\s |
11. |
|
'%u' für aktueller Benutzername |
%u |
24. |
|
ein Leerzeichen |
\s |
37. |
|
Computerzeit |
\d{10} |
12. |
|
ein Leerzeichen |
\s |
25. |
|
die Gruppe des Users |
\w+ |
|
|
|
|
13. |
|
das Login des Users |
\w+ |
26. |
|
ein Leerzeichen |
\s |
|
|
|
|
Damit ergibt sich als Regex zur Beschreibung einer solchen Zeile des Logfiles:
\w{3}\s{1,2}\d{1,2}\s\d\d:\d\d:\d\d\salix\s\w+-\w+:\s%u\s\w+\s%U\s\w+\s%a\s\w+\s%g\s\w+\s%G\s\w+\s%m\s\w*\s%t\s\d{10}
Konzept:
- wir lesen das Logfile ein und stecken das in eine Liste
- für jedes Element dieser Liste tuen wir Folgendes:
- wir matchen dieses Element (die Zeile des Logfiles) mit der Regex
- dabei holen wir den Tag, den Monat, die Uhrzeit, das Login und den Rechnernamen aus der Zeile des Logfiles
- wir geben diese Daten aus
Programm
#!/usr/bin/perl
use strict;
use warnings;
my $datei = 'logon.log'; # Datei muss im gleichen Verzeichnis liegen
# wir lesen das Logfile ein
my @liste = ();
open FILE, '<', $datei or die "konnte $datei nicht zum Lesen oeffnen. $!\n";
while (my $zeile = <FILE>) {
push @liste, $zeile;
}
close FILE;
# für jedes Element dieser Liste tun wir Folgendes:
foreach my $zeile (@liste) {
# wir matchen dieses Element (die Zeile des Logfiles) mit der Regex
if ($zeile =~ /^(\w{3})\s{1,2}(\d{1,2})\s(\d\d:\d\d:\d\d)\salix\s\w+-\w+:\s%u\s(\w+)\s%U\s\w+\s%a\s\w+\s%g\s\w+\s%G\s\w+\s%m\s(\w*)\s%t\s\d{10}\s*$/) {
&ausgabe($2, $1, $3, $4, $5); # Tag, Monat, Uhrzeit, Login, Rechnername
}
}
sub ausgabe {
my ($tag, $monat, $zeit, $login, $pc) = @_;
print "$tag.$monat $zeit \t $login \t $pc \n";
}
__END__
Der Ausgabe sah bei mir so aus:
Aufgaben zu Perl
- Bringen Sie das Programm zum Laufen. Nutzen Sie dazu das hier bereitgestellte Logfile.
- Zeichnen Sie zu diesem Programm ein Struktogramm
- Überarbeiten Sie das Programm so, dass die Ausgabe in Tabellenform erfolgt (korrekte Spalten)
- Überarbeiten Sie das Programm so, dass auch das Betriebssystem des Rechners ausgegeben wird.
- Überarbeiten Sie das Programm so, dass das Datum in der Form 03.11. ausgegeben wird
- Überarbeiten Sie das Programm so, dass die Uhrzeit in der Form "09.20 Uhr" ausgegeben wird (Sekunden entfallen).
- Testen Sie diese Regex: /^(...)\s+(..?) (..:..:..) alix Samba-prelogon: %u (.+) %U .+ %a .+ %g .* %G .+ %m (.*) %t/. Welche ist besser?
- Ergänzen Sie das Programm um eine Überschrift (unterstrichen, Leerzeile).
- Ergänzen Sie das Programm um einen passenden Tabellenkopf.
Aufgaben zum Datenschutz
- Begründen Sie, warum es aus Sicht der Schule bzw. des Admins sinnvoll oder gar zwingend notwendig ist, ein Anmeldelogfile zu haben.
- Begründen Sie, warum normalerweise die Speicherung der Anmeldedaten nicht zulässig (also verboten) ist.
- Erläutern Sie, wie am ERG dieses Problem gelöst ist und die Anmeldung doch geloggt wird.
- Erläutern Sie, welche Risiken aus Sicht der User (Schüler) hinsichtlich des Datenschutzes dabei auftreten.
- Erläutern Sie, durch welche Maßnahmen diese Risiken minimiert werden bzw. werden können.
- Schätzen Sie kritisch ein, wie die Umsetzung des Datenschutzes bzgl. unseres Schulnetzes umgesetzt ist. Bewerten Sie diese Probleme (Bagatelle, unbedeutend, ...)!
- Sie arbeiten hier mit einem (modifizierten) Logfile unseres Schulservers. Bewerten Sie die Bereitstellung dieses Logfiles durch den Informatiklehrer.
Weblinks
zurück
© ERG Saalfeld - Hans-Dietrich Kirmse 18.01.2015
|