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

  1. #1
    Futur Membre du Club
    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 : 56
    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
    Points : 6
    Points
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    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).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre habitué
    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
    Points : 197
    Points
    197
    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. :-)

  4. #4
    Futur Membre du Club
    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 : 56
    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
    Points : 6
    Points
    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

  5. #5
    Futur Membre du Club
    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 : 56
    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
    Points : 6
    Points
    6
    Par défaut
    Tu as des bases de perl ? :: Lointaine....
    Je scripte (bidouille) essentiellement sous bash et power-shell.

    @+

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