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;
} |
Partager