Bonjour,
Je veux faire un script en perl qui va faire une analyse de fichier log pour determiner :
-nombre de sessions ouvertes et fermées
-le nombre d'utilisateurs
-laduree couverture du log (dates hr)
-nbre de lignes-traces pr chque adresse visee
-nbre de trace pr chque service
-nbre de connexion popo,shs et ima-liste des adresses qu ont utiliser ssh
-et en fin liste adresse qui ont envoye un mail.
j ai commence avec ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 print "\n Debut d'analyse de logs\n\n" ; while (<>) { $src .= $_ } ; $_ = $src ; $so = 0 ; while (m| session opened for user (.*?) by |gs) { $so++; if ($so<5) { print " " .sprintf("%4d",$so)." $1\n"; } elsif ($so==5) { print " ...\n\n" ; } ; } ; print " ".sprintf("%4d",$so)." sessions ouvertes\n" ; while (m| session closed for (.*?) by |gs) { $sc++; } ; print " ".sprintf("%4d",$sc)." sessions fermées\n" ; print "\n Rebelote : \n\n" ; @ach = ("session opened for user","session closed for") ; foreach $mac (@ach) { while (m|$mac (.*?) by |gs) { $nbs{$mac}++ ; } ; } ; foreach $mac (reverse sort @ach) { print " ".sprintf("%-30s %6d",$mac, $nbs{$mac})."\n" ; } ; print "\nRécupération des utilisateurs\n" ; $nu = 0 ; foreach $mac (@ach) { while (m|$mac (.*?) by |gs) { $nu++ ; $usr{$1}++ ; if ($nu<5) { print " ".sprintf(" %5d %-15s %-25s", $nu, $1, $mac)."\n" ; } elsif ($nu==5) { print " ...\n" ; } ; } ; } ; print "\n Num Utilisateurs Nb Sessions (o/c) \n" ; $nu = 0 ; foreach $uti (sort keys %usr) { $nu++ ; if ($nu<10) { print " ".sprintf(" %5d %-30s %6d", $nu, $uti, $usr{$uti})."\n" ; } elsif ($nu==10) { print " ...\n" ; } ; } ; print "\n -- fin d'analyse de logs\n\n" ;
Partager