Имеет смысл посмотреть полный раздел:
PDISKS: while (<PDLIST>) {
if ( m/Slot Number\s*:\s*(\d+)/ ) {
$slotnumber = $1;
$pdcount++;
} elsif ( m/(\w+) Error Count\s*:\s*(\d+)/ ) {
if ( $1 eq 'Media') {
$mediaerrors += $2;
} else {
$othererrors += $2;
}
} elsif ( m/Predictive Failure Count\s*:\s*(\d+)/ ) {
$prederrors += $1;
} elsif ( m/Firmware state\s*:\s*(\w+)/ ) {
$fwstate = $1;
if ( $fwstate eq 'Hotspare' ) {
$hotsparecount++;
} elsif ( $fwstate eq 'Online' ) {
# Do nothing
} elsif ( $fwstate eq 'Unconfigured' ) {
# A drive not in anything, or a non drive device
$pdcount--;
} elsif ( $slotnumber != 255 ) {
$pdbad++;
$status = 'CRITICAL';
}
}
} #PDISKS
Этот раздел зацикливается на списке PD (первичных дисков?), И я предполагаю, что этот выходной файл / программа содержит читабельное состояние для каждого подключенного устройства. Код просматривает каждую строку и выполняет некоторые действия в зависимости от содержимого этой строки:
$slotnumber
назначается, когда в содержимом PDLIST
присутствует Slot Number : ...
. Если посмотреть на логику, если есть строка Firmware state
, которая не Hotspare
, Online
или Unconfigured
, а $slotnumber
не 255, то что-то пошло не так, и статус считается CRITICAL
. Количество плохих PD ($pdbad
) увеличивается на единицу.