Bonjour tout le monde !

Je dois concevoir un plugin pour notre outil de supervision Centreon.
Mon objectif est de créer un plugin universel permettant de récupérer n'importe qu'elle information via un OID (suite de chiffre permettant de récupérer superviser un élément précis d'un équipement)

Mon script fonctionne mais il me retourne quelque chose que je ne comprends pas :/

Voici mon 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
97
98
99
100
#! /usr/bin/perl -w
use strict;
use Net::SNMP;
use Getopt::Long;
 
# Chargement du module
use Nagios::Plugin;
 
use vars qw/ $VERSION /;
my $valeur;
my $code_retour;
 
my $plugin_nagios = Nagios::Plugin->new(
        shortname => " ",
        usage =>
         'Usage : %s [ -H|--hostname=<HOST> ] [ -o|--oid=<OID> ] [ -C|--community=<snmp_community> ] [ -v|--version=<snmp_version> ] [ -c|--critical=<threshold> ] [ -w|--warning=<threshold> ] [ -u|--unity=<unity> ]'
                     );
 
# Définition de l'argument -H pour définir le nom hôte
$plugin_nagios->add_arg(
        spec     => 'hostname|H=s',
        help     => 'Hostname ou @IP',    # Aide au sujet de cette option
);
 
# Définition de l'argument -o pour récupérer oid
$plugin_nagios->add_arg(
        spec     => 'oid|o=s',
        help     => 'oid',    # Aide au sujet de cette option
);
 
# 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
);
 
# Définition de l'argument -v pour récupérer la version snmp
$plugin_nagios->add_arg(
        spec     => 'snmp_version|v=s',
        help     => 'version communauté',    # Aide au sujet de cette option
);
 
 
# 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',
);
 
# 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',
);
 
$plugin_nagios->add_arg(
        spec    => 'unity|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 $VERSION = $plugin_nagios->opts->snmp_version;
        my $UNITY = $plugin_nagios->opts->unity;
 
 
#Create a SNMP session
(my $session, my $error)= Net::SNMP->session(
        Hostname => $HOST,
        Community => $COMMUNITY,
        Version => $VERSION);
                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};
}
 
 
# 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,
);
 
if ($code_retour =~ m/error/)
{$code_retour = OK};
$plugin_nagios->nagios_exit ( $code_retour, "$valeur $UNITY |$UNITY=$valeur \n");
Et voici ce qu'il me retourne avec un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
./test.pl H 'A.B.C.D -o 1.3.6.1.45.6.456.2.1.2.1.0 -C xxxxxx -v 2c -w 45 -c 50 -U Licences
Duplicate specification "snmp_version|v=s" for option "v"
Duplicate specification "snmp_version|v=s" for option "v"
  OK - 43 Licences|Licences=43
Et bien évidement, je ne comprends pas pourquoi il me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Duplicate specification "snmp_version|v=s" for option "v"
Duplicate specification "snmp_version|v=s" for option "v"
Merci par avance