my ($mo, $on) = @_;
my $onoff= $on ? "on" : "off";
- my $cmd = "ipmitool -H $mo->{Mgmt} -U $mo->{User} -P $mo->{Pass}";
+ my @cmd = (qw(ipmitool -H), $mo->{Mgmt},
+ '-U',$mo->{User}, '-P',$mo->{Pass});
my $getstatus = sub {
- my $status = `$cmd power status`
- or die "Cannot retrieve current power status";
+ my @scmd = (@cmd, qw(power status));
+ logm("PDU IMPI: @scmd");
+ open IPMI, "-|", @scmd or die $!;
+ my $status = do { local $/=undef; <IPMI>; };
+ $?=0; $!=0;
+ close IPMI and $status or
+ die "Cannot retrieve current power status ($? $!)";
chomp($status);
logm("$status (want $onoff)");
$status =~ s/^Chassis Power is (on|off)$/$1/
return;
}
- system_checked("$cmd power $onoff");
+ system_checked((@cmd, qw(power), $onoff));
my $count = 60;
for (;;) {