0

任何人都可以在https://github.com/simoneziel/custom-nagios-plugins/blob/master/plugins/check_megaraid_sas中解释以下代码。(第 220-223 行)为什么有这段代码

} elsif ( $slotnumber != 255 ) {
            $pdbad++;
            $status = 'CRITICAL';
        }
4

1 回答 1

0

查看完整部分是有意义的:

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只要有Slot Number : ...的内容,就会分配PDLIST. 从逻辑上看,如果有Firmware state一行不是Hotspare, Onlineor Unconfigured, 并且$slotnumber不是 255,那么就出现了可怕的错误并考虑了状态CRITICAL。坏 PD ( $pdbad) 的数量然后增加一。

于 2018-10-29T09:18:34.407 回答