#!/usr/bin/perl %Monitors = ( "Power Overload" => 1, "Main Power Fault" => 1, "Power Control Fault" => 1, "Drive Fault" => 1, "Cooling/Fan Fault" => 1 ); open(I, "/dev/ipmi0") or &unknown("Unable to open IPMI device"); close I; open(I, "ipmitool -I open chassis status|") or &unknown("Unable to run IPMI command"); $code = 0; while () { chop; s/ *: /:/; ($mon, $state) = split /:/; if ($Monitors{$mon} and $state ne "false") { push @result, $mon; $code = 2; } } close I; if ($code == 0) { print "OK: no chassis faults\n"; exit 0; } else { $result = join ", ", @result; print "CRITICAL: $result\n"; exit $code; } sub unknown { print "UNKNOWN: @_[0]\n"; exit 3; }