Check HP switch sensor status via Nagios
Submitted by itefix on Tue, 08/01/2013 - 08:46
The perl script below allows you to check sensors of HP switches via Nagios. It displays status of all available sensors and returns WARNING/CRITICAL if at least one sensor reports it. Requirements: SNMP is enabled at switches and Net-SNMP is installed at the Nagios host.
#!/usr/bin/perl -w use strict; use Getopt::Long; my $UNKNOWN = -1; my $OK = 0; my $WARNING = 1; my $CRITICAL = 2; my $host = undef; my $community = "public"; my $version = "2c"; my $oid = undef; # Defines OID parent paths my $SNMPOIDstatus=".1.3.6.1.4.1.11.2.14.11.1.2.6.1.4"; my $SNMPOIDdescr=".1.3.6.1.4.1.11.2.14.11.1.2.6.1.7"; GetOptions( "host|H=s" => \$host, "community|C=s" => \$community, "version|V=s" => \$version, ); ($host) || die $!; chomp($host); chomp($community); my $snmp_status = `snmpwalk -v $version -c $community $host "$SNMPOIDstatus"`; my $snmp_desc = `snmpwalk -v $version -c $community $host "$SNMPOIDdescr"`; $snmp_desc =~ s/ Sensor//g; # Remove -sensor- text from descriptions $snmp_desc =~ s/"//g; # Remove -sensor- text from descriptions my @sensor_status = split /\n/, $snmp_status; my @sensor_desc = split /\n/, $snmp_desc; my $ix=0; my $status_message = ""; foreach my $sensor (@sensor_status) { $ix++; next if $sensor =~ /INTEGER: 5/ or $sensor =~ /INTEGER: 1/; # skip not present, unknown $status_message .= "OK" if $sensor =~ /INTEGER: 4/; $status_message .= "WARNING" if $sensor =~ /INTEGER: 3/; $status_message .= "CRITICAL" if $sensor =~ /INTEGER: 2/; my ($lsensor) = ($sensor_desc =~ /STRING: (.*)/); $status_message .= " - " . $lsensor . ", "; } print "Sensors - " . $status_message; exit $CRITICAL if $status_message =~ /CRITICAL/; exit $WARNING if $status_message =~ /WARNING/; exit $OK;
Featured product
Free Software Highlights
Release Announcements
- 2024-11-25 Copssh client 8.0.0
- 2024-11-17 OpenSSL tool 2.0.1
- 2024-11-17 Wrbldnsd 5.0.2