Programme en perl
hichamyousfi
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
TMTOWTDI -
TMTOWTDI -
slt tout le monde, je suis très débutant avec Perl, et je veux faites un script en PERL qui demande le nom d'un fichier de log du programme tcpd à traiter. Le format de ce log est une entrée par ligne, dans ce format :
Mar 17 01:21:35 beta.CRM.Montreal.CA in.ftpd[13331]: connect from 63.196.54.11
Mar 17 01:21:35 theta.CRM.Montreal.CA in.ftpd[27801]: connect from 63.196.54.11
Mar 17 01:21:35 truffaut.CRM.Montreal.CA in.ftpd[18652]: connect from 63.196.54.11
le programme doit lire le fichier de log et analyser chaque ligne pour trouver des balayages
("scans") potentiels, en supposant que plus de 5 demandes provenant de la même adresse dans la même minute est un balayage potentiel. Quand votre programme trouve un balayage potentiel, il envoie immédiatement un courrier électronique à une
adresse courriel, avec comme information l'heure et l'adresse du balayage. Pour
envoyer le courrier électronique, on doit faire un appel à sendmail .
le programme devra à la fin donner les statistiques suivantes :
a) L'adresse source qu'on retrouve le plus souvent dans le fichier analysé
b)
1) le nombre total de connexions acceptées
2) le nombre total de connexions refusées
3) le nombre de demandes de connexions (acceptées et refusées) pour chacun des démons suivants : ftpd telnetd rpcbind imap pop
merci bcp pour votre aide
Mar 17 01:21:35 beta.CRM.Montreal.CA in.ftpd[13331]: connect from 63.196.54.11
Mar 17 01:21:35 theta.CRM.Montreal.CA in.ftpd[27801]: connect from 63.196.54.11
Mar 17 01:21:35 truffaut.CRM.Montreal.CA in.ftpd[18652]: connect from 63.196.54.11
le programme doit lire le fichier de log et analyser chaque ligne pour trouver des balayages
("scans") potentiels, en supposant que plus de 5 demandes provenant de la même adresse dans la même minute est un balayage potentiel. Quand votre programme trouve un balayage potentiel, il envoie immédiatement un courrier électronique à une
adresse courriel, avec comme information l'heure et l'adresse du balayage. Pour
envoyer le courrier électronique, on doit faire un appel à sendmail .
le programme devra à la fin donner les statistiques suivantes :
a) L'adresse source qu'on retrouve le plus souvent dans le fichier analysé
b)
1) le nombre total de connexions acceptées
2) le nombre total de connexions refusées
3) le nombre de demandes de connexions (acceptées et refusées) pour chacun des démons suivants : ftpd telnetd rpcbind imap pop
merci bcp pour votre aide
A voir également:
- Programme en perl
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
6 réponses
j ai ecrit ce script pour compter les connexions acceptées et les connexions refusées, mais il ne fonctione pas. Aidez moi SVP :
#!/usr/bin/perl
#
#
use strict;
use warnings;
#ouvrir fichier en lecture
open Fich,'< log.txt' or die "Le fichier n'existe pas !";
while (my $ligne = <Fich>) {
# découpe une ligne en champs
my @mots=split / /, $ligne;
for (my $i=0;$i<=$#mots;$i++) {
my $connection = 0;
my $refusion = 0;
if ($6 eq "connect"){
$connection ++;
} elsif ($6 eq "refused"){
refusion ++;
}
}
}
close Fich;
#!/usr/bin/perl
#
#
use strict;
use warnings;
#ouvrir fichier en lecture
open Fich,'< log.txt' or die "Le fichier n'existe pas !";
while (my $ligne = <Fich>) {
# découpe une ligne en champs
my @mots=split / /, $ligne;
for (my $i=0;$i<=$#mots;$i++) {
my $connection = 0;
my $refusion = 0;
if ($6 eq "connect"){
$connection ++;
} elsif ($6 eq "refused"){
refusion ++;
}
}
}
close Fich;
Merci bcp pour ta reponse
je veux pas que tu me fasse le script mais juste des indices
merci une autre fois
je veux pas que tu me fasse le script mais juste des indices
merci une autre fois
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Dans la boucle for tu incrémentes la variable $i donc c'est $i que tu dois tester dans les if
$6 a une autre signification en Perl, mais ce n'est pas le sujet.
Pour ton info, dans ton message initial "connect" est plutôt dans la colonne 6 donc l'index 5 du tableau
cat blabla
Mar 17 01:21:35 beta.CRM.Montreal.CA in.ftpd[13331]: connect from 63.196.54.11
Mar 17 01:21:35 theta.CRM.Montreal.CA in.ftpd[27801]: connect from 63.196.54.11
Mar 17 01:21:35 truffaut.CRM.Montreal.CA in.ftpd[18652]: connect from 63.196.54.11
perl -F"/\s/" -ane 'print "$F[5]\n"' blabla
connect
connect
connect
perl -F"/\s/" -ane 'print "$F[6]\n"' blabla
from
from
from
$6 a une autre signification en Perl, mais ce n'est pas le sujet.
Pour ton info, dans ton message initial "connect" est plutôt dans la colonne 6 donc l'index 5 du tableau
cat blabla
Mar 17 01:21:35 beta.CRM.Montreal.CA in.ftpd[13331]: connect from 63.196.54.11
Mar 17 01:21:35 theta.CRM.Montreal.CA in.ftpd[27801]: connect from 63.196.54.11
Mar 17 01:21:35 truffaut.CRM.Montreal.CA in.ftpd[18652]: connect from 63.196.54.11
perl -F"/\s/" -ane 'print "$F[5]\n"' blabla
connect
connect
connect
perl -F"/\s/" -ane 'print "$F[6]\n"' blabla
from
from
from