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

Programmation et administration système Perl Discussion :

Pour analyser un log d'installation sur plusieurs machines


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut Pour analyser un log d'installation sur plusieurs machines
    Bonjour,

    J'ai un log sur deux colonnes qui a cette strucuture.

    Shirt : Green
    Shirt : Red
    Shirt : Bleu
    Shirt : Black
    Shoe : Bleu
    Shoe : Black
    Sock : Grey
    Sock : Green
    Sock : Black
    Tie : Green
    Tie : Black

    Je voudrais faire avec un script sous Linux :

    1) Affichage sous forme de tableau.

    1.1 ) Classement des articles par couleurs :

    Green : Shirt ; Sock ; Tie
    Red : Shirt
    Bleu : Shirt ; Shoe
    Black : Shirt ; Shoe ; Sock ; Tie
    Grey : Sock

    1.2 ) Classement des couleurs par articles :
    : : :
    Shirt : Green ; Red ; Bleu ; Black
    Shoe : Bleu ; Black
    Sock : Grey ; Green ; Black
    Tie : Green ; Black


    2) Inverse : Affichage sous forme de tableau de ce qui manque

    2.1 ) Les articles qui manquent par couleurs :

    Green : Shoe
    Red : Shoe ; Sock ; Tie
    Bleu : Sock ; Tie
    Black :
    Grey : Shirt ; Shoe ; Tie

    2.2 ) Les couleurs qui manquent par articles :

    Shirt :
    Shoe : Green ; Red
    Sock : Red
    Tie : Red ; Bleu

    L'objectif est de lister par article et par couleur ce qu'il y a et ce qui manque...

    Pour le moment je le fais avec SQLites.
    Je cherche quelque chose de plus léger.

    Merci pour votre aide.


    Jean-Christophe

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Tu as des bases de perl ? Tu souhaites l'écrire toi même (tu attends des pistes pour écrire le script toi-même) ou juste avoir un script et le comprendre pour pouvoir le maintenir par la suite ?

    Ce genre de traitement nécessite l'usage de hash et array. A priori, j'utiliserai un hash de array pour lire le tableau ; ce hash servirait de base pour tout le reste du script :
    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
     
     
    my ($log) = @ARGV;
    open my $LOG, "<", $log or die "Can't open $log for reading: $!";
    my %article;
    while (defined(my $line = <$LOG>)) {
      chomp $line;
      my ($article, $couleur) = split /\s*:\s*/, $_, 2;
      $article{$article} = [] if !exists $article{$article}; # ligne optionnelle grâce à l'autovivification
      push @{$article{$article}}, $couleur;
    }
    my %couleur;
    foreach my $article (keys %article) {
      foreach my $couleur (@{$article{$article}}) {
        $couleur{$couleur} = [] if !exists $couleur{$couleur}; # ligne optionnelle grâce à l'autovivification
        push @{$couleur{$couleur}}, $article;
      }
    }
     
    # Avec %article et %couleur, on peut facilement réaliser les traitements 1.1) et 1.2)
    # Pour les traitements 2.*) c'est guère plus compliqué (l'usage de grep sera utile
    (je n'ai pas testé cet embryon de script).

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut
    Tu as des bases de perl ? :: Lointaine....
    Je scripte (bidouille) essentiellement sous bash et power-shell.

    @+

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2014
    Messages : 84
    Par défaut
    en quel langage ?
    J'ai vu que tu as aussi posté sur GNU/linux.

    Et qu'as tu fait ? As tu commencé à coder quelque chose ?

    Comme je suis de bonne humeur, je t'aide pour le point 1), en langage Perl :
    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
    use strict;
    use warnings;
    use Data::Dumper;
     
    my %hashArticles = ();
    my %hashCouleurs = ();
    my $File = '.\listeArticles.csv';
    open my $FILE, "<", $File or die "Ouverture impossible de $File $!";
    my($article, $couleur);
    while (<$FILE>) {
    	chomp;
    	($article, $couleur) = split( ':', $_ );
    	push(@{$hashArticles{$article}},$couleur);
    	push(@{$hashCouleurs{$couleur}},$article);
    }
     
    #print "Articles :: \n".Dumper(\%hashArticles);
    #print "Couleurs :: \n".Dumper(\%hashCouleurs);
     
    foreach $article (sort(keys(%hashArticles))){
    	my $list = join( " ; ", @{$hashArticles{$article}});
    	print "$article : $list\n";
    }
    print "\n\n";
    foreach $couleur (sort(keys(%hashCouleurs))){
    	my $list = join( " ; ", @{$hashCouleurs{$couleur}});
    	print "$couleur : $list\n";
    }
    close($FILE);
    Pour le reste, je te laisse chercher. :-)

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2016
    Messages : 6
    Par défaut Merci !
    Pour tout t'avouer le perl j'en ai fait il y a.... Oh là là sinon plus... Et Alzheimer et passé par là !
    J'ai scripté des trucs de ce genre il y a une sacré paye sous awk. Mais voilà...
    Dans mon quotidien je ne fais jamais de scripting perl...

    Pour le moment je passe par SQL.

    Je vais étudier tes pistes !

    Merci !

    Jean-Christophe

Discussions similaires

  1. Script pour analyser un log d'installation.
    Par JeanChristopheMarius dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 17/02/2016, 15h09
  2. Réponses: 8
    Dernier message: 26/03/2008, 16h58
  3. c++ pour analyser des logs
    Par ferjani.kais dans le forum C++
    Réponses: 7
    Dernier message: 20/11/2007, 14h38
  4. quelle api pour analyser les logs
    Par aljeje dans le forum Logging
    Réponses: 5
    Dernier message: 20/09/2007, 11h48
  5. [Log]Outil pour analyser les logs d'une appli J2EE
    Par sbelli dans le forum Logging
    Réponses: 1
    Dernier message: 18/01/2006, 10h20

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