IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Perl analyse de fichiers-logs


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Perl analyse de fichiers-logs
    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" ;

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Salut!

    J'ais déjat travailler sur quelque chose comme sa je peux peu-être t'aider!
    Quel est exactement ton problême ?
    Ton script qui ne fonctionne pas ?
    Donne des détails
    Utilise la balise CODE car c'est pas très lisible

  3. #3
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Si tu veux vraiment récupérer le contenu d'un fichier dans une chaîne, fais plutôt comme ça (slurping) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $src = do { local $/; <> }
     
    # ou encore (plus lisible):
    my $src;
    do {
        local $/;
        my $src = <>;
    }
    Tu peux bien sûr passer un file handle dans l'opérateur <>.

    Explication: Tu supprimes localement (cad, en te limitant au bloc {...}) le séparateur d'enregistrement ($/) (valeur par défaut, "\n"). Donc la lecture à l'intérieur du bloc n'a plus de séparateur d'enregistrement : tout le fichier est lu. Et ce ci n'est valable que dans le bloc (grâce à local).

  4. #4
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    J'ai quelques doutes sur l'utilité d'un slurp dans un examen de logs. Pourquoi faire plusieurs boucles au lieu d'une seule avec un traitement par des if ?
    Et il y a vraiment des trucs bizarres dans le script de départ, comme par exemple les lignes de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print " ".sprintf("%4d",$so)." sessions ouvertes\n";
    Alors qu'il serait plus simple d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf " %4d sessions ouvertes\n",$so
    De plus, tu sembles avoir oublié par distraction d'utiliser le pragma strict, qui n'est pas vraiment facultatif contrairement à ce qu'on pourrait croire.
    There's nothing like $HOME!

  5. #5
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Tout à fait d'accord avec Schmorgluck. (c'est pour cela que j'ai dit: si tu veux vraiment... )

Discussions similaires

  1. Analyse du Fichier log !
    Par zatout dans le forum Java EE
    Réponses: 0
    Dernier message: 24/02/2011, 12h59
  2. Savoir analyser ses fichiers log
    Par idamarco dans le forum Administration système
    Réponses: 1
    Dernier message: 03/11/2009, 13h36
  3. perl analyse de fichier
    Par finelady dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2008, 20h46
  4. Des logiciels pour l'analyse des fichiers log
    Par maya dans le forum Réseau
    Réponses: 3
    Dernier message: 14/04/2007, 22h27
  5. Programme qui analyse un fichier log
    Par abdou.sahraoui dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 20/08/2004, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo