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 :

résultat commande dans un tableau


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Par défaut résultat commande dans un tableau
    Bonjour,

    Pour des besoins de supervisions avec nagios sur HP-UX, j'ai dû me mettre au Perl ce matin même (je n'y ai jamais touché avant).

    J'ai pu commencer mon script en cherchant beaucoup sur la toile par-ci par-là, mais je me heurte maintenant à un problème que je ne comprends pas trop.

    Pour expliquer le contexte, j'ai besoin de comparer les valeurs d'utilisation des deux swap de mon serveur à des valeurs qui seront passées en paramètres (pour définir les seuils critiques et warning). J'ai donc besoin de récupérer les résultats des deux commandes "swapinfo" et de les mettre chacun dans un tableau pour pouvoir les traiter par la suite. C'est là où je me suis arrêté pour le moment.

    Voici ce que j'ai fait :
    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
     
    #!/opt/perl/bin/perl
    #
    # check multiswap hpux
    #
    use strict;
    use Getopt::Std;
    use vars qw(@swap1 @swap2 $command_line1 $command_line2 %exit_codes);
     
    # Codes préféfinis pour Nagios
    %exit_codes  = ('UNKNOWN',-1,
                    'OK',0,
                    'WARNING',1,
                    'CRITICAL',2);
     
    # Récupérer les infos du swap1 en /dev/vg00/lvol2
    $command_line1 = `swapinfo -tam | grep lvol2`;
     
     
    # Récupérer les infos du swap2 en /dev/vg00/lvol9
    $command_line2 = `swapinfo -tam | grep lvol9`;
     
    # Mettre le résultat dans un tableau pour swap1
    chomp $command_line1;
    @swap1 = split(/ /,$command_line1);
     
    # Mettre le résultat dans un tableau pour swap2
    chomp $command_line2;
    @swap2 = split(/ /, $command_line2);
    Avec la commande "swapinfo -tam", j'ai noté que, par exemple, la 3e colonne (en partant de 0) donne le nombre de Mb libre, et que la 4e colonne donne le pourcentage utilisé.
    Ainsi, pour vérifier que je pouvais bien utiliser les valeurs du tableau par la suite, j'ai essayé de les lire, en rajoutant, à la fin du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    print $swap1[3],"\n";
    print $swap1[4],"\n";
    print $swap2[3],"\n";
    print $swap2[4],"\n";
    Et à l'exécution, rien ne s'affiche...

    Après plusieurs essais, je me suis aperçu que seul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    print $swap1[0],"\n";
    print $swap2[0],"\n";
    m'affichait effectivement ce que j'avais demandé. Dès que j'essaye d'afficher les colonnes suivantes, rien.

    Je débute donc j'ai forcément loupé quelque chose mais je ne sais pas quoi, pouvez-vous m'aider ?

    Merci d'avance !

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    Salut !

    split /\t/ répondra mieux au problème à mon avis, car si le résultat est renvoyé en colonnes, il y a fort à parier qu'il s'agit de tabulations, et non d'espaces.

    @+
    Mr6

  3. #3
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Par défaut
    Salut !

    Je viens d'essayer ta solution dans mon script mais, pour
    , tout le résultat de ma commande est affiché (toutes les colonnes), et pour , à nouveau rien n'est affiché...

    En complément, il s'agit en effet à la base de tabulations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    swapinfo -tam | grep lvol2
    affiche

    Une autre idée ?

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    alors dans le doute \s au lieu de \t
    C'est moins propre à mon gout mais ca prendre tout type d'espace

    @+
    Mr6

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Par défaut
    arf... le résultat est le même qu'au départ :
    affiche bien la 1ere colonne, soit "dev", puis
    n'affiche rien (une ligne vide) :
    root:/opt/nrpe/scripts#./check_multiswap.pl
    dev

    root:/opt/nrpe/scripts#

  6. #6
    Mr6
    Mr6 est déconnecté
    Membre émérite

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 608
    Par défaut
    lol ! compris !

    Rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $commande_line1 =~ s/\s\s/\s/g
    Pour enlever les espaces en trop avant de découper dessus

    @+
    Mr6

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mettre contenue d'une commande dans un tableau
    Par parisien91 dans le forum Langage
    Réponses: 8
    Dernier message: 09/02/2009, 10h27
  2. [MySQL] Affichage de résultats SQL dans un tableau
    Par illight dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 14/02/2007, 09h24
  3. [SQL] Affichage résultat requête dans un tableau, bouton affichage page
    Par megapacman dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 18/05/2006, 16h42
  4. Réponses: 1
    Dernier message: 01/05/2006, 11h17
  5. [VB]résultat requête dans un tableau
    Par blaiso dans le forum VB 6 et antérieur
    Réponses: 29
    Dernier message: 30/01/2006, 16h26

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