From 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 30 Sep 2013 00:03:24 +0200 Subject: Import Nagios Plugins site Import the Nagios Plugins web site, Cronjobs, infrastructure scripts, and configuration files. --- web/attachments/242023-check_ifstatus.patch | 241 ++++++++++++++++++++++++++++ 1 file changed, 241 insertions(+) create mode 100644 web/attachments/242023-check_ifstatus.patch (limited to 'web/attachments/242023-check_ifstatus.patch') diff --git a/web/attachments/242023-check_ifstatus.patch b/web/attachments/242023-check_ifstatus.patch new file mode 100644 index 0000000..76f490d --- /dev/null +++ b/web/attachments/242023-check_ifstatus.patch @@ -0,0 +1,241 @@ +1a2,12 +> # vim:foldmethod=syntax:tabstop=4:shiftwidth=4 +> # +> # matthew.martin, Tuesday August 14, 2007 +> # Problems with check_ifstatus.pl +> # 1) "No response from remote host" should be unknown, not critical, right? +> # 2) Serial link "dormant" should be critical, not okay +> # 3) dormant, excluded and unused interfaces are not correctly counted +> # 4) default exclusions were broken, fix that and add a couple default exclusions +> # 5) made the formatting in this file more consistent +> # +> # check_ifstatus.pl - nagios plugin +3,4d13 +< # check_ifstatus.pl - nagios plugin +< # +29c38 +< # +--- +> # +36c45 +< use lib "/opt/csw/libexec/nagios-plugins" ; +--- +> use lib "/opt/csw/libexec/nagios-plugins"; +49d57 +< +94c102 +< my %excluded ; +--- +> my %excluded; +97,100d104 +< +< +< +< +103,104c107,108 +< print ("ERROR: No snmp response from $hostname (alarm timeout)\n"); +< exit $ERRORS{"UNKNOWN"}; +--- +> print ("ERROR: No snmp response from $hostname (alarm timeout)\n"); +> exit $ERRORS{"UNKNOWN"}; +107,108c111 +< +< #Option checking +--- +> # Option checking +111,112c114 +< if ($status != 0) +< { +--- +> if ($status != 0) { +117d118 +< +127,129d127 +< +< +< +131,135c129,135 +< +< if (!defined($response = $session->get_table($snmpoid))) { +< $answer=$session->error; +< $session->close; +< $state = 'CRITICAL'; +--- +> if (!defined($response = $session->get_table($snmpoid))) { +> $answer=$session->error; +> $session->close; +> # matthew.martin. Tuesday August 14, 2007 +> # I think a SNMP error should give UNKNOWN, not CRITICAL +> #$state = 'CRITICAL'; +> $state = 'UNKNOWN'; +138c138 +< }else{ +--- +> } else { +141,142c141,142 +< exit $ERRORS{$state}; +< } +--- +> exit $ERRORS{$state}; +> } +144,148c144,148 +< foreach $snmpkey (keys %{$response}) { +< $snmpkey =~ /.*\.(\d+)$/; +< $key = $1; +< $ifStatus{$key}{$snmpoid} = $response->{$snmpkey}; +< } +--- +> foreach $snmpkey (keys %{$response}) { +> $snmpkey =~ /.*\.(\d+)$/; +> $key = $1; +> $ifStatus{$key}{$snmpoid} = $response->{$snmpkey}; +> } +151d150 +< +155a155,156 +> # matthew.martin. This script cannot tell that specific logical interfaces are +> # associated with their phys IF so it checks them all. +158c159,160 +< # skip unused interfaces +--- +> # Skip interfaces flagged with -u (--unused_ports) +> # "A comma separated list of ifIndex values that should be excluded" +160,163c162,166 +< # check only if interface is administratively up +< if ($ifStatus{$key}{$snmpIfAdminStatus} == 1 ) { +< +< # check only if interface type is not listed in %excluded +--- +> +> # Further checking only if interface is administratively up +> if ($ifStatus{$key}{$snmpIfAdminStatus} == 1 ) { +> +> # Check only if interface type is not listed in %excluded +170,172c173,175 +< $ifStatus{$key}{$snmpIfName}, +< $ifStatus{$key}{$snmpIfAlias}); +< }else{ +--- +> $ifStatus{$key}{$snmpIfName}, +> $ifStatus{$key}{$snmpIfAlias}); +> } else { +174c177 +< $ifStatus{$key}{$snmpIfDescr}); +--- +> $ifStatus{$key}{$snmpIfDescr}); +178c181,182 +< }else{ +--- +> # matthew.martin Interface is listed in %excluded +> } else { +181c185,187 +< +--- +> # matthew.martin If not administratively up, mark as unused. +> } elsif ($ifStatus{$key}{$snmpIfAdminStatus} == 2 ) { +> $ifunused++; +183,184c189,195 +< }else{ +< $ifunused++; +--- +> } else { +> # matthew.martin. Original line: +> # $ifunused++; +> # actually matches the flag +> # -u (--unused_ports) A comma separated list of ifIndex values that should be excluded +> # They should be marked as excluded, not unused. +> $ifexclude++; +188,208c199,224 +< if ($ifdown > 0) { +< $state = 'CRITICAL'; +< $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d
", +< $hostname, +< $ifup, +< $ifdown, +< $ifdormant, +< $ifexclude, +< $ifunused); +< $answer = $answer . $ifmessage . "\n"; +< } +< else { +< $state = 'OK'; +< $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d", +< $hostname, +< $ifup, +< $ifdown, +< $ifdormant, +< $ifexclude, +< $ifunused); +< } +--- +> # matthew.martin +> # The original has dormant serial interfaces return status of "OK". +> # A dormant serial connection should be CRITICAL, right? +> # I changed the following line to address this: +> #if ($ifdown > 0) { +> if (($ifdown > 0) || ($ifdormant > 0)) { +> $state = 'CRITICAL'; +> $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d
", +> $hostname, +> $ifup, +> $ifdown, +> $ifdormant, +> $ifexclude, +> $ifunused); +> $answer = $answer . $ifmessage . "\n"; +> } else { +> $state = 'OK'; +> $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d", +> $hostname, +> $ifup, +> $ifdown, +> $ifdormant, +> $ifexclude, +> $ifunused); +> } +> +248c264 +< printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; +--- +> printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; +252c268 +< printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; +--- +> printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; +323c339 +< }else{ +--- +> } else { +326c342 +< }else{ +--- +> } else { +338c354 +< }else{ +--- +> } else { +341c357 +< }else{ +--- +> } else { +370,371d385 +< }else{ +< $excluded{23} = 1; # default PPP(23) if empty list - note (AIX seems to think PPP is 22 according to a post) +372a387,391 +> # matthew.martin, Tuesday August 14, 2007. In the original this else was nested wrong and never matched +> } else { +> $excluded{23} = 1; # default PPP(23) if empty list - note (AIX seems to think PPP is 22 according to a post) +> $excluded{24} = 1; # matthew.martin, Tuesday August 14, 2007, Nokia, ifDescr.6 = loop0c0 Software Loopback Layer -- ifType.6 = softwareLoopback(24) (taken from a Nokia IP330) +> $excluded{25} = 1; # matthew.martin, Tuesday August 14, 2007, Nokia, ifDescr.1 = pppoe0 Ethernet Layer -- ifType.1 = eon(25) (from a Nokia IP350) +378c397 +< foreach $key (@unused_ports) { +--- +> foreach $key (@unused_ports) { +392c411 +< }else{ +--- +> } else { +450c469 +< }else{ +--- +> } else { -- cgit v1.2.3-74-g34f1