diff options
Diffstat (limited to 'contrib/check_hprsc.pl')
-rwxr-xr-x | contrib/check_hprsc.pl | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/contrib/check_hprsc.pl b/contrib/check_hprsc.pl deleted file mode 100755 index 7a856502..00000000 --- a/contrib/check_hprsc.pl +++ /dev/null @@ -1,221 +0,0 @@ -#!/usr/bin/perl -wT -# -# Copyright (c) 2000 Hugo Gayosso -# -# Description: -# Nagios plug-in that monitors the resources on an HP-UX machine -# by querying the SNMP daemon -# -# License: General Public License (GPL) -# http://www.gnu.org/copyleft/gpl.txt -# -# ChangeLog -# - -# Requirements: Perl 5.005 or higher - -# Variable initialization -$ENV{'PATH'}=""; -$ENV{'ENV'}=""; -$ENV{'BASH_ENV'}=""; - - -if (-e "/usr/bin/snmpwalk") { - $snmpwalk = "/usr/bin/snmpwalk"; -} elsif (-e "/usr/local/bin/snmpwalk") { - $snmpwalk = "/usr/local/bin/snmpwalk"; -} - - -# HP-UX SNMP OIDs -$filesystemID1_OID = ".1.3.6.1.4.1.11.2.3.1.2.2.1.1"; -$mounted_OID = ".1.3.6.1.4.1.11.2.3.1.2.2.1.3"; -$totalspace_OID = ".1.3.6.1.4.1.11.2.3.1.2.2.1.4"; -$freespace_OID = ".1.3.6.1.4.1.11.2.3.1.2.2.1.6"; -$path_OID = ".1.3.6.1.4.1.11.2.3.1.2.2.1.10"; -$cpu_5min_OID = ".1.3.6.1.4.1.11.2.3.1.1.4"; - -use Getopt::Long; - -GetOptions( "check-filesystem" => \$chk_fs, - "show-filesystems" => \$show_fs, - "check-filesystemID" => \$chk_fsid, - "check-cpu" => \$chk_cpu, - "host=s" => \$target_host, - "community=s" => \$target_community, - "filesystemID1=i" => \$fsid1_opt, - "filesystem=s" => \$fs_opt, - "protocol:s" => \$proto_opt, - "warning=i" => \$warning_opt, - "critical=i" => \$critical_opt); - -$proto_opt = 1 - unless $proto_opt == 1 || - $proto_opt == '2c' || - $proto_opt == 3; - -if ($chk_fs) { - walk_data($snmpwalk, $target_host, $target_community, $mounted_OID,$proto_opt ); - walk_data($snmpwalk, $target_host, $target_community, $totalspace_OID,$proto_opt ); - walk_data($snmpwalk, $target_host, $target_community, $freespace_OID,$proto_opt ); check_filesystem($fs_opt, $warning_opt, $critical_opt); -} elsif ($show_fs) { - walk_data($snmpwalk, $target_host, $target_community, $filesystemID1_OID,$proto_opt); - walk_data($snmpwalk, $target_host, $target_community, $mounted_OID,$proto_opt ); - walk_data($snmpwalk, $target_host, $target_community, $path_OID,$proto_opt); - show_filesystem(); -} elsif ($chk_fsid){ - $totalspace_fsID_OID = "$totalspace_OID.$fsid1_opt"; - $freespace_fsID_OID = "$freespace_OID.$fsid1_opt"; - walk_data($snmpwalk, $target_host, $target_community, $totalspace_fsID_OID,$proto_opt); - walk_data($snmpwalk, $target_host, $target_community, $freespace_fsID_OID,$proto_opt); - check_filesystemID1($fsid1_opt, $warning_opt, $critical_opt); -} elsif ($chk_cpu) { - get_cpu_load($snmpwalk, $target_host, $target_community, $cpu_5min_OID,$proto_opt); - check_cpu_5min($cpu, $warning_opt, $critical_opt); -} else { - print "\n\nUsage:\n"; - print "Checking 5-min CPU Load:\n"; - print " $0 --check-cpu -warning <threshold> --critical <threshold> --host <yourhost> --community <SNMP community> --protocol <SNMP version [1|2c|3]>\n\n"; - print "Checking local filesystem mounted on a host:\n"; - print " $0 --show-filesystems --host <hostname> --community <SNMP community> --protocol <SNMP version [1|2c|3]>\n\n"; - print "Checking by filesystem name:\n"; - print " $0 --check-filesystem --filesystem </dev/vg00/lvol1> --warning <% used space> --critical <% used space> --host <hostname> --community <SNMP community> --protocol <SNMP version [1|2c|3]>\n\n"; - print "Checking by filesystem ID:\n"; - print " $0 --check-filesystemID --filesystemID <filesystemID1> --warning <% used space> --critical <% used space> --host <hostname> --community <SNMP community> --protocol <SNMP version [1|2c|3]>\n\n"; -} - -sub get_cpu_load { - my ($snmpwalk, $target_host, $target_community, $OID,$vers) = @_; - die "cannot fork: $!" unless defined($pid = open(SNMPWALK, "-|")); - - if ($pid) { # parent - while (<SNMPWALK>) { - my @snmpdata = split(/:/,$_); - $cpu = $snmpdata[1]/100; - } - close(SNMPWALK) or warn "kid exited $?"; - } else { # child - exec($snmpwalk,'-c',$target_community,'-v',$vers,$target_host,$OID) or die "can't exec program: $!"; - } -} - -sub walk_data { -#This function queries the SNMP daemon for the specific OID - my ($snmpwalk, $target_host, $target_community, $OID,$vers) = @_; - - die "cannot fork: $!" unless defined($pid = open(SNMPWALK, "-|")); - - if ($pid) { # parent - while (<SNMPWALK>) { - $output = $_; - sort_walk_data($output); - } - close(SNMPWALK) or warn "kid exited $?"; - } else { # child - exec($snmpwalk,'-c',$target_community,'-v',$vers,$target_host,$OID) or die "can't exec program: $!"; - } -} - -sub sort_walk_data { - my ($snmp_data) = @_; - @fields = split(/\./,$snmp_data); - $item = $fields[8]; - $filesystemID1 = $fields[9]; - @fields2 = split(/=/,$fields[10]); -# $filesystemID2 = $fields2[0]; - $value = $fields2[1]; - chomp($value); - if ($value =~ /"/) { - @fields3 = split(/"/,$value); - $value = $fields3[1]; - } - if ($item == 3) { - $mounted{$filesystemID1} = "$value"; - } elsif ($item == 4) { - $totalspace{$filesystemID1} = "$value"; - } elsif ($item == 6) { - $freespace{$filesystemID1} = "$value"; - } elsif ($item == 10) { - $filesystempath{$filesystemID1} = "$value"; - } -} - -sub show_filesystem { - print "\n\nfilesystemID1\tmounted filesystem\tfilesystem path\n"; - foreach $element (keys %mounted) { - print "$element\t$mounted{$element}\t\t$filesystempath{$element}\n"; - } - print "\n\n"; -} - -sub check_filesystem { - -# Warning = percentage of used space >= $warning and < $critical -# Critical = percentage of used space > $warning and >= $critical -# OK = percentage of used space < $warning and < $critical - - my ($mounted_filesystem, $warning, $critical) = @_; - foreach $element (keys %mounted) { - if ($mounted{$element} eq $mounted_filesystem) { - my $warning_result = $totalspace{$element}*(100-$warning)/100; - my $critical_result = $totalspace{$element}*(100-$critical)/100; - my $result_percent = $freespace{$element}*100/$totalspace{$element}; - if (($freespace{$element} <= $warning_result) && ($freespace{$element} > $critical_result)) { - printf "Only %d M (%d%s) free\n",$freespace{$element}/1024,$result_percent,"%"; - exit 1; - } elsif ($freespace{$element} <= $critical_result) { - printf "Only %d M (%d%s) free\n",$freespace{$element}/1024,$result_percent,"%"; - exit 2; - } else { - printf "Disk ok - %d M (%d%s) free\n",$freespace{$element}/1024,$result_percent,"%"; - exit 0; - } - } - } - print "$mounted_filesystem doesn't exist in $target_host\n\n"; - exit -1; -} - -sub check_filesystemID1{ -# Warning = percentage of used space >= $warning and < $critical -# Critical = percentage of used space > $warning and >= $critical -# OK = percentage of used space < $warning and < $critical - - my ($fsid1, $warning, $critical) = @_; - foreach $element (keys %totalspace) { - if ($element eq $fsid1) { - my $warning_result = $totalspace{$element}*(100-$warning)/100; - my $critical_result = $totalspace{$element}*(100-$critical)/100; - my $result_percent = $freespace{$element}*100/$totalspace{$element}; - if (($freespace{$element} <= $warning_result) && ($freespace{$element} >= $critical_result)) { - printf "Only %d M (%d%s) free\n",$freespace{$element}/1024,$result_percent,"%"; - exit 1; - } elsif ($freespace{$element} <= $critical_result) { - printf "Only %d M (%d%s) free\n",$freespace{$element}/1024,$result_percent,"%"; - exit 2; - } else { - printf "Disk ok - %d M (%d%s) free\n",$freespace{$element}/1024,$result_percent,"%"; - exit 0; - } - } - } - print "$fsid1 doesn't exist in $target_host\n\n"; - exit -1; -} - -sub check_cpu_5min { - my ($cpu, $warn, $crit) = @_; - if ($cpu >= $crit) { - print "Critical- 5-min load: $cpu\n"; - exit 2; - } elsif ($cpu >= $warn) { - print "Warning - 5-min load: $cpu\n"; - exit 1; - } else { - print "Load ok - 5-min load: $cpu\n"; - exit 0; - } -} - - - |