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
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 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
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    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 chevronné Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    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 chevronné
    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
    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.

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    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, 13h59
  2. Savoir analyser ses fichiers log
    Par idamarco dans le forum Administration système
    Réponses: 1
    Dernier message: 03/11/2009, 14h36
  3. perl analyse de fichier
    Par finelady dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2008, 21h46
  4. Des logiciels pour l'analyse des fichiers log
    Par maya dans le forum Réseau
    Réponses: 3
    Dernier message: 14/04/2007, 23h27
  5. Programme qui analyse un fichier log
    Par abdou.sahraoui dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 20/08/2004, 15h27

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