Bonjour,

après maintes recherches sur le sujet, je poste ici afin d'obtenir un peu d'aide, une idée, un indice qui me permettront de trouver la réponse à mon problème.

Je suis en formation alternance et on me demande de mettre en place un serveur nagios avec tout un tas de sonde. L'une d'entre elle me pose particulièrement problème.

Je dois récupérer l'état d'une machine virtuelle tournant sous Hyper-V. Après de longues recherches, je commence à développer mon propre plugin nagios en perl en m'inspirant fortement de ce tutoriel : http://djibril.developpez.com/tutori...n-nagios-perl/.

Le problème c'est qu'en lancant le script dans un shell, j'obtiens la réponse voulue. Mais lorsque le même script est lancé par nagios, j'obtiens cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
**ePN /usr/local/nagios/libexec/check_vm2.pl: "Duplicate specification "host|h=s" for option "h"".
Voici le code de mon plugin :
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
#!/usr/bin/perl
#===============================================================================
# Auteur : Ekath
# Date   : 26/01/2012
# But    : Vérification de l'état de VM
#===============================================================================
use strict;
use warnings;
 
# Chargement du module
use Nagios::Plugin;
 
use vars qw/ $VERSION /;
 
# Version du plugin
$VERSION = '1.0';
 
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 => 'Check VM Status',
	usage => 'Usage : %s [-h ou --host <Hostname>] [-n ou --name <VM Name>]',
	version   => $VERSION,
	license   => $LICENCE,
);
 
# Définition de l'argument --host ou -h pour récupérer l'adresse de l'hote
$plugin_nagios->add_arg(
	'host|h=s',
	'@IP de la machine', 
	1);
 
# Définition de l'argument --name ou -n pour récupérer le nom de VM
$plugin_nagios->add_arg('
	name|n=s',
	'Nom de la machine virtuelle',
	1);
 
# Activer le parsing des options de ligne de commande
$plugin_nagios->getopts;
 
# Définition des arguments fixes
my $IP = $plugin_nagios->opts->host;
my $vmn = $plugin_nagios->opts->name;
my $ns = 'root\Virtualization';
my $id = 'admin%mdp';
 
# Définition de la requête
my $query = 'SELECT EnabledState FROM Msvm_ComputerSystem WHERE ElementName = \"'.$vmn.'\"';
 
# On execute la requête avec wmic
my $result = `wmic -U $id --namespace="$ns" //$IP "$query"`;
 
# On récupère la ligne de sortie et on la traite de manière à récupérer l'état de la VM
my $rresult = reverse($result);
$result = substr(($rresult),index($rresult,"|")+1,1);
 
# On traite en fonction du résultat
if ($result eq 2)
{
	$plugin_nagios->nagios_exit( OK, "RUNNING" );
	exit 0;
}
elsif ($result eq 3)
{
	$plugin_nagios->nagios_exit( CRITICAL, "DOWN" );
	exit 2;
}
else
{
	$plugin_nagios->nagios_exit (UNKNOWN, "UNKNOWN" );
	exit 3;
}
Je remercie par avance toutes les personnes qui pourront me guider vers la réponse.