je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15
TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51
TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02
TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donn=E9
s'est connect=E9 sur un host ou combien de connexion ont eu lieu sur un
host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour
realiser ce script.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
David LE BOURGEOIS
Bonjour
Bonjour.
je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donné s'est connecté sur un host ou combien de connexion ont eu lieu sur un host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour realiser ce script.
Voici un lien contenant déjà pas mal de documentation sur Perl :
http://perl.enstimac.fr/
Et une solution parmi d'autres :
$ cat log TOTO s'est connecté [...] sur host.fr le [...] TITI s'est connecté [...] sur host.fr le [...] TATA s'est connecté [...] sur host.fr le [...] FOO s'est connecté [...] sur localhost le [...] FOO s'est connecté [...] sur localhost le [...] FOO s'est connecté [...] sur bar.fr le [...]
$ cat parse #!/usr/bin/perl -wT
use strict;
my %users; my %hosts; my %t; my $t; my $u; my $h; my $n;
while (<>) { if (/^(.+) s'est connecté.*sur (.+) le/) { ${$users{$1}}{$2}++; $hosts{$2}++; } } while (($u, $t) = each %users) { print "$u s'est connectén"; while (($h, $n) = each %{$t}) { print "t$n fois sur $hn"; } } while (($h, $n) = each %hosts) { print "$n connexion(s) sur $hn"; }
$ ./parse log TATA s'est connecté 1 fois sur host.fr TOTO s'est connecté 1 fois sur host.fr FOO s'est connecté 1 fois sur bar.fr 2 fois sur localhost TITI s'est connecté 1 fois sur host.fr 1 connexion(s) sur bar.fr 3 connexion(s) sur host.fr 2 connexion(s) sur localhost
merci d'avance de votre aide
De rien.
-- David LE BOURGEOIS e-mail : david.lebourgeois (at) free.fr jabber : david.lebourgeois (at) jabber.fr
Bonjour
Bonjour.
je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15
TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51
TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02
TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donné
s'est connecté sur un host ou combien de connexion ont eu lieu sur un
host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour
realiser ce script.
Voici un lien contenant déjà pas mal de documentation sur Perl :
http://perl.enstimac.fr/
Et une solution parmi d'autres :
$ cat log
TOTO s'est connecté [...] sur host.fr le [...]
TITI s'est connecté [...] sur host.fr le [...]
TATA s'est connecté [...] sur host.fr le [...]
FOO s'est connecté [...] sur localhost le [...]
FOO s'est connecté [...] sur localhost le [...]
FOO s'est connecté [...] sur bar.fr le [...]
$ cat parse
#!/usr/bin/perl -wT
use strict;
my %users;
my %hosts;
my %t;
my $t;
my $u;
my $h;
my $n;
while (<>) {
if (/^(.+) s'est connecté.*sur (.+) le/) {
${$users{$1}}{$2}++;
$hosts{$2}++;
}
}
while (($u, $t) = each %users) {
print "$u s'est connectén";
while (($h, $n) = each %{$t}) {
print "t$n fois sur $hn";
}
}
while (($h, $n) = each %hosts) {
print "$n connexion(s) sur $hn";
}
$ ./parse log
TATA s'est connecté
1 fois sur host.fr
TOTO s'est connecté
1 fois sur host.fr
FOO s'est connecté
1 fois sur bar.fr
2 fois sur localhost
TITI s'est connecté
1 fois sur host.fr
1 connexion(s) sur bar.fr
3 connexion(s) sur host.fr
2 connexion(s) sur localhost
merci d'avance de votre aide
De rien.
--
David LE BOURGEOIS
e-mail : david.lebourgeois (at) free.fr
jabber : david.lebourgeois (at) jabber.fr
je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donné s'est connecté sur un host ou combien de connexion ont eu lieu sur un host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour realiser ce script.
Voici un lien contenant déjà pas mal de documentation sur Perl :
http://perl.enstimac.fr/
Et une solution parmi d'autres :
$ cat log TOTO s'est connecté [...] sur host.fr le [...] TITI s'est connecté [...] sur host.fr le [...] TATA s'est connecté [...] sur host.fr le [...] FOO s'est connecté [...] sur localhost le [...] FOO s'est connecté [...] sur localhost le [...] FOO s'est connecté [...] sur bar.fr le [...]
$ cat parse #!/usr/bin/perl -wT
use strict;
my %users; my %hosts; my %t; my $t; my $u; my $h; my $n;
while (<>) { if (/^(.+) s'est connecté.*sur (.+) le/) { ${$users{$1}}{$2}++; $hosts{$2}++; } } while (($u, $t) = each %users) { print "$u s'est connectén"; while (($h, $n) = each %{$t}) { print "t$n fois sur $hn"; } } while (($h, $n) = each %hosts) { print "$n connexion(s) sur $hn"; }
$ ./parse log TATA s'est connecté 1 fois sur host.fr TOTO s'est connecté 1 fois sur host.fr FOO s'est connecté 1 fois sur bar.fr 2 fois sur localhost TITI s'est connecté 1 fois sur host.fr 1 connexion(s) sur bar.fr 3 connexion(s) sur host.fr 2 connexion(s) sur localhost
merci d'avance de votre aide
De rien.
-- David LE BOURGEOIS e-mail : david.lebourgeois (at) free.fr jabber : david.lebourgeois (at) jabber.fr
Alex Marandon
wrote:
je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donné s'est connecté sur un host ou combien de connexion ont eu lieu sur un host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour realiser ce script.
Je pense que grep est ton ami. Appele en contexte scalaire, il te renvoie le nombre d'occurences.
$ cat test.txt TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34 $ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt 4 $ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt 1
Tony.delplace@gmail.com wrote:
je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15
TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51
TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02
TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donné
s'est connecté sur un host ou combien de connexion ont eu lieu sur un
host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour
realiser ce script.
Je pense que grep est ton ami. Appele en contexte scalaire, il te
renvoie le nombre d'occurences.
$ cat test.txt
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15
TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51
TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02
TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
$ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt
4
$ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt
1
je dois faire des statistiques a partir d un fichier de log
le fichier est de cette forme :
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
je dois en sortir des stats indiquant combien de fois un user donné s'est connecté sur un host ou combien de connexion ont eu lieu sur un host, etc
n'ayant aucune notion de PERL j'aimerai avoir quelques pistes pour realiser ce script.
Je pense que grep est ton ami. Appele en contexte scalaire, il te renvoie le nombre d'occurences.
$ cat test.txt TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34 $ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt 4 $ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt 1
JPP
[...]
Je pense que grep est ton ami. Appele en contexte scalaire, il te renvoie le nombre d'occurences.
$ cat test.txt TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34 $ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt 4 $ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt 1
Oui enfin, dans ce cas, il faut surtout espérer qu'il n'y ait pas d'utilisateur nommé "root" ou "connect"...
[...]
Je pense que grep est ton ami. Appele en contexte scalaire, il te
renvoie le nombre d'occurences.
$ cat test.txt
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15
TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51
TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02
TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
$ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt
4
$ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt
1
Oui enfin, dans ce cas, il faut surtout espérer qu'il n'y ait pas
d'utilisateur nommé "root" ou "connect"...
Je pense que grep est ton ami. Appele en contexte scalaire, il te renvoie le nombre d'occurences.
$ cat test.txt TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34 $ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt 4 $ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt 1
Oui enfin, dans ce cas, il faut surtout espérer qu'il n'y ait pas d'utilisateur nommé "root" ou "connect"...
Alex Marandon
JPP wrote:
[...]
Je pense que grep est ton ami. Appele en contexte scalaire, il te renvoie le nombre d'occurences.
$ cat test.txt TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34 $ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt 4 $ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt 1
Oui enfin, dans ce cas, il faut surtout espérer qu'il n'y ait pas d'utilisateur nommé "root" ou "connect"...
Ce genre de cas peut etre pris en compte avec des regexps un peu plus sophistiquees.
JPP wrote:
[...]
Je pense que grep est ton ami. Appele en contexte scalaire, il te
renvoie le nombre d'occurences.
$ cat test.txt
TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15
TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51
TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02
TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34
$ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt
4
$ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt
1
Oui enfin, dans ce cas, il faut surtout espérer qu'il n'y ait pas
d'utilisateur nommé "root" ou "connect"...
Ce genre de cas peut etre pris en compte avec des regexps un peu plus
sophistiquees.
Je pense que grep est ton ami. Appele en contexte scalaire, il te renvoie le nombre d'occurences.
$ cat test.txt TOTO s est connecte en root sur HOST.FR le Apr 19 11:11:15 TOTO s est connecte en root sur HOST.FR le Apr 19 15:25:51 TOTO s est connecte en root sur HOST.FR le Apr 19 17:21:02 TOTO s est connecte en root sur HOST.FR le Apr 19 22:02:34 $ perl -e 'print ( scalar grep /TOTO/, <> ), "n" ' test.txt 4 $ perl -e 'print ( scalar grep /17:21:02/, <> ), "n" ' test.txt 1
Oui enfin, dans ce cas, il faut surtout espérer qu'il n'y ait pas d'utilisateur nommé "root" ou "connect"...
Ce genre de cas peut etre pris en compte avec des regexps un peu plus sophistiquees.