Update scripts to work with ssacli (in adition to hpacucli)

This commit is contained in:
Daniel Berteaud 2020-09-23 20:00:46 +02:00
parent 4eb376b929
commit 4777b8274f
2 changed files with 53 additions and 51 deletions

View File

@ -1,10 +1,11 @@
#!/usr/bin/perl -w
use strict;
use File::Which;
use Getopt::Long;
my $slot = '';
my $hpacucli = '/usr/sbin/hpacucli';
my $cli = which('hpacucli') || which('ssacli');
my @validchecks = qw/controller array logicaldrive physicaldrive/;
my $check = join ',', @validchecks;
@ -19,7 +20,7 @@ $0 --slot=<slot number> --check=<what to check>
* slot must be a number. You can find on which slot you have controllers with the command:
$hpacucli controller all show status
$cli controller all show status
* check is a comma separated list of item to check. Default values (without --check option) will check everything
Valid values are:
@ -34,8 +35,8 @@ if ($slot !~ /^\d+$/){
usage();
}
unless (-x $hpacucli){
die "Cannot run $hpacucli\n";
unless (-x $cli){
die "Cannot run $cli\n";
}
my @checks = split /\s?,\s?/, $check;
@ -46,9 +47,9 @@ foreach my $check (@checks){
foreach my $param (@checks){
# Global controller checks
if ($param eq 'controller'){
open HPACUCLI, "$hpacucli controller slot=$slot show status|" ||
die "An error occured while running $hpacucli: $!";
foreach my $line (<HPACUCLI>){
open CLI, "$cli controller slot=$slot show status|" ||
die "An error occured while running $cli: $!";
foreach my $line (<CLI>){
if ( $line =~ /Status\:\s*([\w\s]+)$/ ) {
my $res = $1;
chomp($res);
@ -58,12 +59,12 @@ foreach my $param (@checks){
}
}
}
close HPACUCLI;
close CLI;
}
else{
open HPACUCLI, "$hpacucli controller slot=$slot $param all show status|" ||
die "An error occured while running $hpacucli: $!";
foreach my $line (<HPACUCLI>){
open CLI, "$cli controller slot=$slot $param all show status|" ||
die "An error occured while running $cli: $!";
foreach my $line (<CLI>){
if ( $line =~ /^\s*$param.*:\s*(\w+[\w\s]*)$/i ) {
my $res = $1;
chomp($res);
@ -73,7 +74,7 @@ foreach my $param (@checks){
}
}
}
close HPACUCLI;
close CLI;
}
}

View File

@ -1,23 +1,24 @@
#!/usr/bin/perl -w
use strict;
use File::Which;
use JSON;
my $json;
@{$json->{data}} = ();
my $hpacucli = '/usr/sbin/hpacucli';
my $cli = which('hpacucli') || which('ssacli');
# the hpacucli utility is needed
unless (-x $hpacucli){
# hpacucli or ssacli utility is needed
if (not defined $cli){
print to_json($json);
exit(0);
}
open( HPACUCLI, "$hpacucli controller all show status|" )
or die "An error occured while running $hpacucli: $!";
open( CLI, "$cli controller all show status|" )
or die "An error occured while running $cli: $!";
foreach my $line (<HPACUCLI>){
foreach my $line (<CLI>){
if ( $line =~ m/Another instance of hpacucli is running! Stop it first\./i ){
die "Another instance of hpacucli is running\n";
}
@ -25,6 +26,6 @@ foreach my $line (<HPACUCLI>){
push @{$json->{data}}, {"{#MODEL}" => $1, "{#SLOT}" => $2};
}
}
close HPACUCLI;
close CLI;
print to_json($json);
exit(0);