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 :

script perl pour plugin nagios


Sujet :

Programmation et administration système Perl

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut script perl pour plugin nagios
    Bonjour,



    Je m’intéresse au langage perl dans le but de construire mes propres plugins nagios.

    Pour l'instant je débute, je me suis construis un script avec des arguments en dur me permettant de récupérer une valeur bien précise, d'un équipement précis. Le voici :
    #! /usr/bin/perl -w
    use strict;
    use Net::SNMP;
    use Getopt::Long;

    my $valeur;
    my $OID = "1.3.6.1.4.1.13576.10.1.100.X.X.X.X";
    my $host = "X.X.X.X";
    my $community = "Public" ;


    (my $session, my $error) = Net::SNMP->session(
    Hostname => $host,
    Community => $community);
    die "session error: $error" unless ($session);

    my $result = $session->get_request($OID);
    die "request error: ".$session->error unless (defined $result);
    $session->close;

    foreach my $cle (keys(%{$result})){
    $valeur =$result->{$cle} ;
    }

    $valeur=$valeur/10 ;


    print "$valeur A\n"
    Maintenant que j'ai récupéré ma valeur, j'aimerai faire une script plus générale, et ne pas renseigner en dur l'OID, l'host et la communauté. L'objectif est de pouvoir rendre le scripte utilisable avec nagios. L'objectif étant de renseigner les arguments directement sur Centreon, et non dans le script. Vois à quoi je pensais, mais j'aurais besoin de votre avis :

    -H $HOSTADDRESS$ -o $ARG1$ -C $ARG2$ -P $ARG3$ -w $ARG4$ -c $ARG5$

    A vrai dire je ne sais pas comment faire le lien script vers nagios, n'y même comment mettre en place mes variables.



    Merci par avance

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Bonsoir,

    Ce tutoriel devrait t'aider à bien écrire ton plugin : Plugin Nagios en Perl.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut
    Bonjour Djibril,

    J'ai lu ton tutoriel, et j'ai pris exemple sur le script "taille fichier"

    Voici le script que j'ai pu construire

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    #! /usr/bin/perl -w
    use strict;
    use warnings;
    use Net::SNMP;
    use Getopt::Long;
     
    # Chargement du module
     use Nagios::Plugin;
     
     
     use vars qw/ $VERSION /;
     
    my $valeur;
    # Version du plugin
    $VERSION = '1.12';
     
    my $LICENCE
      = "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
            . ' Il est livré avec ABSOLUMENT AUCUNE GARANTIE.';
     
    my $plugin_nagios = Nagios::Plugin->new(
          shortname => 'Verification OID',
          usage =>
             'Usage : %s [ -H|--hostname <HOST> ] [ -o|--oid <OID> ] [ -C|--community <snmp_community> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ]',
          version => $VERSION,
          license => $LICENCE,
                         );
     
    # Définition de l'argument -H pour définir le nom d’hôte
    $plugin_nagios->add_arg(
            spec     => 'hostname|H=s',
            help     => 'Hostname ou @IP',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    #        label => ‘ADDRESS’
    );
     
    # Définition de l'argument -o pour récupérer l’oid
    $plugin_nagios->add_arg(
            spec     => 'oid|o=s',
            help     => 'oid',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument -C pour récupérer la communauté
    $plugin_nagios->add_arg(
            spec     => 'snmp_community|C=s',
            help     => 'Nom de la communauté',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument warning
    $plugin_nagios->add_arg(
            spec     => 'warning|w=f',             # Nous acceptons des nombres réels
            help     => 'Exit with WARNING status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Définition de l'argument critical
    $plugin_nagios->add_arg(
            spec     => 'critical|c=f',
            help     => 'Exit with CRITICAL status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Activer le parsing des options de ligne de commande
    $plugin_nagios->getopts;
     
            my $HOST = $plugin_nagios->opts->hostname;
            my $OID = $plugin_nagios->opts->oid;
            my $COMMUNITY = $plugin_nagios->opts->snmp_community;
     
     
     
    # Récupérons le code retour en fonction des seuils
    #        my $code_retour = $plugin_nagios->check_threshold(
    #                check    => $OID,
    #                warning  => $plugin_nagios->opts->warning,
    #                critical => $plugin_nagios->opts->critical,
    #);
    #
    #$plugin_nagios->nagios_exit( $code_retour, "Valeur $OID" );
     
     __END__
    Lorsque je test le script sans la dernière partie, la commande passe mais je n'ai rien en retour ; ce qui est normal.

    Maintenant, lorsque j'ajoute le dernier bout de code à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # Récupérons le code retour en fonction des seuils
            my $code_retour = $plugin_nagios->check_threshold(
                    check    => $OID,
                    warning  => $plugin_nagios->opts->warning,
                    critical => $plugin_nagios->opts->critical,
    );
     
    $plugin_nagios->nagios_exit( $code_retour, "Valeur $OID" );
    J'ai plusieurs erreurs que je ne comprends pas. Les voici :
    Argument "1.3.6.1.4.1.13576.10.1.100.1.1.3.191" isn't numeric in numeric le (<=) at /usr/local/share/perl5/Nagios/Plugin/Range.pm line 98.
    Argument "1.3.6.1.4.1.13576.10.1.100.1.1.3.191" isn't numeric in numeric le (<=) at /usr/local/share/perl5/Nagios/Plugin/Range.pm line 98.
    Si vous pouvez me signaler ce qu'il ne va pas, car je ne comprends pas.
    De plus, je ne vois pas comment je peux afficher ma valeur de l'OID.

    EDIT :

    Pour obtenir la valeur souhaite, j'ai repris mon premier script que j'essaie de retravailler :
    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
    # Récupérer valeur OID
    my $result = $session->get_request($OID);
            die "request error: ".$session->error unless (defined $result);
            $session->close;
     
    foreach my $cle (keys(%{$result})){
         $valeur =$result->{$cle} ;
    }
     
    $valeur=$valeur/10
     
    # Récupérons le code retour en fonction des seuils
            my $code_retour = $plugin_nagios->check_threshold(
                    check    => $valeur,
                    warning  => $plugin_nagios->opts->warning,
                    critical => $plugin_nagios->opts->critical,
    );
     
    $plugin_nagios->nagios_exit( $code_retour, "Valeur $valeur" );
    Merci par avance !

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut
    Désolé pour le double post, mais je préfère séparé mes deux réponses car j'avance à grand pas

    J'arrive à remonter ma valeur, et le code retour fonctionne !
    Voici le code
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    #! /usr/bin/perl -w
    use strict;
    use warnings;
    use Net::SNMP;
    use Getopt::Long;
     
    # Chargement du module
    use Nagios::Plugin;
     
    use vars qw/ $VERSION /;
    my $valeur;
    my $code_retour;
    # Version du plugin
    $VERSION = '1.12';
     
    my $LICENCE
      = "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
            . ' Il est livré avec ABSOLUMENT AUCUNE GARANTIE.';
     
    my $plugin_nagios = Nagios::Plugin->new(
          shortname => 'Verification OID',
          usage =>
             'Usage : %s [ -H|--hostname <HOST> ] [ -o|--oid <OID> ] [ -C|--community <snmp_community> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ]',
          version => $VERSION,
          license => $LICENCE,
                         );
     
    # Définition de l'argument -H pour définir le nom d’hôte
    $plugin_nagios->add_arg(
            spec     => 'hostname|H=s',
            help     => 'Hostname ou @IP',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    #        label => ‘ADDRESS’
    );
     
    # Définition de l'argument -o pour récupérer l’oid
    $plugin_nagios->add_arg(
            spec     => 'oid|o=s',
            help     => 'oid',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument -C pour récupérer la communauté
    $plugin_nagios->add_arg(
            spec     => 'snmp_community|C=s',
            help     => 'Nom de la communauté',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument warning
    $plugin_nagios->add_arg(
            spec     => 'warning|w=f',             # Nous acceptons des nombres réels
            help     => 'Exit with WARNING status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Définition de l'argument critical
    $plugin_nagios->add_arg(
            spec     => 'critical|c=f',
            help     => 'Exit with CRITICAL status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Activer le parsing des options de ligne de commande
    $plugin_nagios->getopts;
     
            my $HOST = $plugin_nagios->opts->hostname;
            my $OID = $plugin_nagios->opts->oid;
            my $COMMUNITY = $plugin_nagios->opts->snmp_community;
     
    #Create a SNMP session
    (my $session, my $error)= Net::SNMP->session(
            Hostname => $HOST,
            Community => $COMMUNITY);
                    die "session error: $error" unless ($session);
     
    my ($result) = $session->get_request($OID);
            die "request error:".$session->error unless (defined $result);
            $session->close;
     
    foreach my $cle (keys(%{$result})){
            $valeur= $result->{$cle};
    }
     
    #$valeur=$valeur/10;
     
    # Récupérons le code retour en fonction des seuils
    my $code_retour = $plugin_nagios->check_threshold(
            check    => $valeur,
            warning  => $plugin_nagios->opts->warning,
            critical => $plugin_nagios->opts->critical,
    );
     
    $plugin_nagios->nagios_exit( $code_retour, "Valeur $valeur" );

    Tout d'abord, voici le retour de ma commande :

    "my" variable $code_retour masks earlier declaration in same scope at test1.pl line 90.
    Verification OID OK - Valeur 312770.7
    Par contre, j'ai le retour d'un message d'erreur que je ne comprends pas.
    J'aimerai également savoir comment personnaliser le message de sortie selon code_retour renvoyé. Doit-on utiliser $SERVICEOUTPUT$ ?

    Au passage, ton tuto est vraiment bien rédigé !

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    La variable $code-retour est déjà déclarée (avec "my") à la ligne 12. Tu as un warnings quand tu la déclares à nouveau ligne 90. Mais ça ne devrait pas empêcher le script de fonctionner normalement dans ce cas précis.

    Comme tu ne t'en sers pas ailleurs, tu peux supprimer la déclaration de la ligne 12. Ou alors, enlever le "my" ligne 90. Mais la première solution est a priori meilleure (il est préférable de déclarer les variables dans la plus petite portée possible, plutôt que de faire des variables "quasi globales").

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut
    Ah oui merci Lolo, une erreur d'étourderie...

    Il me reste encore un tout petit réglage.
    Le script fonctionne parfaitement sous centreon, mais je n'ai pas la remontée d'information que je voudrais :/

    Voici mon 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    #! /usr/bin/perl -w
    use strict;
    use warnings;
    use Net::SNMP;
    use Getopt::Long;
     
    # Chargement du module
    use Nagios::Plugin;
     
    use vars qw/ $VERSION /;
    my $valeur;
    my $code_retour;
     
    # Version du plugin
    $VERSION = '1.12';
     
    my $LICENCE
      = "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
            . ' Il est livré avec ABSOLUMENT AUCUNE GARANTIE.';
     
    my $plugin_nagios = Nagios::Plugin->new(
          shortname => 'Verification SNMP',
          usage =>
             'Usage : %s [ -H|--hostname <HOST> ] [ -o|--oid <OID> ] [ -C|--community <snmp_community> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ]',
          version => $VERSION,
          license => $LICENCE,
                         );
     
    # Définition de l'argument -H pour définir le nom d’hôte
    $plugin_nagios->add_arg(
            spec     => 'hostname|H=s',
            help     => 'Hostname ou @IP',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    #        label => ‘ADDRESS’
    );
     
    # Définition de l'argument -o pour récupérer l’oid
    $plugin_nagios->add_arg(
            spec     => 'oid|o=s',
            help     => 'oid',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument -C pour récupérer la communauté
    $plugin_nagios->add_arg(
            spec     => 'snmp_community|C=s',
            help     => 'Nom de la communauté',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument warning
    $plugin_nagios->add_arg(
            spec     => 'warning|w=f',             # Nous acceptons des nombres réels
            help     => 'Exit with WARNING status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Définition de l'argument critical
    $plugin_nagios->add_arg(
            spec     => 'critical|c=f',
            help     => 'Exit with CRITICAL status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Activer le parsing des options de ligne de commande
    $plugin_nagios->getopts;
     
            my $HOST = $plugin_nagios->opts->hostname;
            my $OID = $plugin_nagios->opts->oid;
            my $COMMUNITY = $plugin_nagios->opts->snmp_community;
            my $WARNING = $plugin_nagios->opts->warning;
            my $CRITICAL = $plugin_nagios->opts->critical;
     
    #Create a SNMP session
    (my $session, my $error)= Net::SNMP->session(
            Hostname => $HOST,
            Community => $COMMUNITY);
                    die "session error: $error" unless ($session);
     
    my ($result) = $session->get_request($OID);
            die "request error:".$session->error unless (defined $result);
            $session->close;
     
    foreach my $cle (keys(%{$result})){
            $valeur= $result->{$cle};
    }
     
    # Convertir la valeur
            #$valeur=$valeur/10;
            #$valeur=$valeur/100;
     
    # Récupérons le code retour en fonction des seuils
     $code_retour = $plugin_nagios->check_threshold(
            check    => $valeur,
            warning  => $plugin_nagios->opts->warning,
            critical => $plugin_nagios->opts->critical,
    );
     
    #$plugin_nagios->nagios_exit( $code_retour, "Valeur $valeur" );
    printf("$code_retour, Courant $valeur (Seuils W:$WARNING C:$CRITICAL)|Courant=$valeur A\n", $result,$result);
    Et voici le retour :

    0, Courant 89 (Seuils W:800 C:900)|Courant=89 A
    En faite, j'aimerai simplement que le code erreur me renvoie OK, Warning, Critical et non 0,1,2 ou 3

    Merci par avance

  7. #7
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Crée un tableau (ou un hachage) de paramétrage pour convertir le chiffre en chaîne de caractère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my @param = qw /OK Warning Critical Other/; # tu as 4 chiffres et trois diagnostics, j'ai ajouté Other pour compléter
    Il suffit ensuite de d'utiliser le tableau pour convertir.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut
    Merci pour ta réponse

    As-tu un exemple à me partager car je ne comprends pas comment faire :/

    Voici que j'ai essayer de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    103 my @param = (   "0"             =>      "OK",
    104                 "1"             =>      "WARNING",
    105                 "2"             =>      "CRITICAL",
    106                 "3"             =>      "UNKNOWN");
    107
    108 printf("$code_retour{@param}, Courant $valeur (Seuils W:$WARNING C:$CRITICAL)|Courant=$valeur A\    n", $result,$result);

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Bonjour,

    Je tiens à vous faire remarquer que dans ma documentation, j'utilise le module Monitoring::Plugin qui est le remplacer de Nagios::plugin.
    Ensuite pour afficher un message de type OK, il faut faire de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $np->plugin_exit( 'OK', "mon message" );

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par musha76 Voir le message
    Merci pour ta réponse

    As-tu un exemple à me partager car je ne comprends pas comment faire :/

    Voici que j'ai essayer de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    103 my @param = (   "0"             =>      "OK",
    104                 "1"             =>      "WARNING",
    105                 "2"             =>      "CRITICAL",
    106                 "3"             =>      "UNKNOWN");
    107
    108 printf("$code_retour{@param}, Courant $valeur (Seuils W:$WARNING C:$CRITICAL)|Courant=$valeur A\    n", $result,$result);
    Il ne faut pas utiliser cette méthode archaïque. Le module te donne les méthodes toutes faites pour cela.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Je ne peux pas utiliser le module Monitoring:lugin car il me semble qu'il n'est pas installé.
    Malheureusement, je n'ai pas l'autorisation d'installer.

    Pour le coût, il y a-t-il une méthode mon archaïque ?

    Encore une erreur d’étourderie de ma part...

    J'ai oublié le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $plugin_nagios->nagios_exit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $plugin_nagios->nagios_exit ($code_retour, "Courant $valeur (Seuils W:$WARNING C:$CRITICAL)|Courant=$valeur A\n", $result,$result);

  12. #12
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 135
    Points : 70
    Points
    70
    Par défaut
    Je me permet de vous solliciter une dernière fois.

    En effet, j'ai un problème avec mon retour de commande.

    Je m'explique, tout d'abord voici le retour que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WAGO_10 OK - Courant = 5 A
    J'aimerai simplement avoir en sortie ceci Alors j'ai supprimé le shortname du module Nagios:luging, mais il semble qu'en l'absence de shortname, le script prend le nom du fichier en sortie car mon script se nomme check_wago_10

    Revoici le 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    #! /usr/bin/perl -w
    use strict;
    use warnings;
    use Net::SNMP;
    use Getopt::Long;
     
    # Chargement du module
    use Nagios::Plugin;
     
    use vars qw/ $VERSION /;
    my $valeur;
    my $code_retour;
     
    # Version du plugin
    $VERSION = '1.12';
     
    my $LICENCE
      = "Ce plugin Nagios est gratuit et libre de droits, et vous pouvez l'utiliser à votre convenance."
            . ' Il est livré avec ABSOLUMENT AUCUNE GARANTIE.';
     
    my $plugin_nagios = Nagios::Plugin->new(
          usage =>
             'Usage : %s [ -H|--hostname <HOST> ] [ -o|--oid <OID> ] [ -C|--community <snmp_community> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ]',
          version => $VERSION,
          license => $LICENCE,
                         );
     
    # Définition de l'argument -H pour définir le nom d’hôte
    $plugin_nagios->add_arg(
            spec     => 'hostname|H=s',
            help     => 'Hostname ou @IP',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    #        label => ‘ADDRESS’
    );
     
    # Définition de l'argument -o pour récupérer l’oid
    $plugin_nagios->add_arg(
            spec     => 'oid|o=s',
            help     => 'oid',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument -C pour récupérer la communauté
    $plugin_nagios->add_arg(
            spec     => 'snmp_community|C=s',
            help     => 'Nom de la communauté',    # Aide au sujet de cette option
            required => 1,                  # Argument obligatoire
    );
     
    # Définition de l'argument warning
    $plugin_nagios->add_arg(
            spec     => 'warning|w=f',             # Nous acceptons des nombres réels
            help     => 'Exit with WARNING status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    # Définition de l'argument critical
    $plugin_nagios->add_arg(
            spec     => 'critical|c=f',
            help     => 'Exit with CRITICAL status if less than BYTES bytes of file',
            label    => 'BYTES',
            required => 1,
    );
     
    $plugin_nagios->add_arg(
            spec    => 'unit|U=s',
            help    => 'Unité'
    );
     
    # Activer le parsing des options de ligne de commande
    $plugin_nagios->getopts;
     
            my $HOST = $plugin_nagios->opts->hostname;
            my $OID = $plugin_nagios->opts->oid;
            my $COMMUNITY = $plugin_nagios->opts->snmp_community;
            my $UNIT = $plugin_nagios->opts->unit;
     
    #Create a SNMP session
    (my $session, my $error)= Net::SNMP->session(
            Hostname => $HOST,
            Community => $COMMUNITY);
                    die "session error: $error" unless ($session);
     
    my ($result) = $session->get_request($OID);
            die "request error:".$session->error unless (defined $result);
            $session->close;
     
    foreach my $cle (keys(%{$result})){
            $valeur= $result->{$cle};
    }
     
    # Convertir la valeur
            $valeur=$valeur/10;
            #$valeur=$valeur/100;
     
    # Récupérons le code retour en fonction des seuils
     $code_retour = $plugin_nagios->check_threshold(
            check    => $valeur,
            warning  => $plugin_nagios->opts->warning,
            critical => $plugin_nagios->opts->critical,
    );
     
    $plugin_nagios->nagios_exit( $code_retour, "Courant = $valeur $UNIT |Courant=$valeur \n");
    D'avance merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/10/2014, 14h26
  2. modification script perl pour nagios
    Par tetzispa dans le forum Programmation et administration système
    Réponses: 19
    Dernier message: 27/09/2014, 22h29
  3. script perl pour nagios
    Par tetzispa dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 06/06/2014, 11h06
  4. Script PERL pour l'archivage/purge/zip de fichiers
    Par jfmerveille dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2007, 12h52
  5. script perl pour ftp
    Par donny dans le forum Modules
    Réponses: 5
    Dernier message: 29/09/2006, 12h02

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