pandorafms/pandora_server/util/plugin/ipmi-plugin.pl

69 lines
1.4 KiB
Perl
Executable File

#!/usr/bin/perl
use strict;
use warnings;
sub get_param($) {
my $param = shift;
my $value = undef;
$param = "-".$param;
for(my $i=0; $i<$#ARGV; $i++) {
if ($ARGV[$i] eq "--") {
if ($param eq "--") {
$value = join(' ', @ARGV[$i+1..$#ARGV]);
}
last;
} elsif ($ARGV[$i] eq $param) {
$value = $ARGV[$i+1];
last;
}
}
return $value;
}
##########################################################################
# Show help
##########################################################################
sub show_help {
print "\nSpecific Pandora FMS Intel DCM Discovery\n";
print "(c) Artica ST 2011 <info\@artica.es>\n\n";
print "Usage:\n\n";
print " $0 -h <host> -u <username> -p <password> -s <sensor_id>\n";
exit;
}
if ($#ARGV == -1){
show_help();
}
my $host = get_param("h");
my $user = get_param("u");
my $pass = get_param("p");
my $sensor = get_param("s");
my $extraopts = get_param("-");
my $cmd = "ipmi-sensors -h $host -u $user -p $pass -s $sensor $extraopts --ignore-not-available-sensors --no-header-output --comma-separated-output --output-event-bitmask";
my $res = `$cmd`;
if (defined $res and "$res" ne "") {
my ($sensor_id, $name, $type, $value, $units, $eventmask) = split(/,/, $res);
#Output the value
if ($value eq 'N/A') {
if ($eventmask =~ /([0-9A-Fa-f]+)h/) {
print hex $1;
} else {
print $eventmask;
}
} else {
print $value;
}
} else {
print STDERR "Error processing command: $cmd\n";
}