#!/usr/bin/perl -w use strict; use Getopt::Std; sub warning { print "@_\n"; exit(1); } sub critical { print "@_\n"; exit(2); } sub unknown { print "@_\n"; exit(3); } sub success { print "@_\n"; exit(0); } sub usage { print "Usage: $0\n\n"; print "\t -H \t Hostaddress \t\t\t\t (required)\n"; print "\t -C \t Community \t\t\t\t (required)\n"; print "\t -p \t Partition to check \t\t\t (required)\n"; print "\t -c \t Critical level used space in percent \t (required)\n"; print "\t -w \t Warning level used space in percent \t (required)\n"; print "\t -h \t Show this help information\n\n"; exit(1); } $SIG{ALRM} = \&critical; alarm(295); my %opts; getopts('H:C:p:c:w:h:', \%opts); my $host = $opts{"H"}; my $comm = $opts{"C"}; my $part = $opts{"p"}; my $crit = $opts{"c"}; my $warn = $opts{"w"}; my $help = $opts{"h"}; if (defined($help)) { usage(); } if (defined($host) && defined($comm) && defined ($part) && defined($crit) && defined($warn)) { my $hddInfo=`snmpdf -v1 -c $comm $host | grep $part | head -1`; chomp $hddInfo; my @diskInfo=split(/\s+/, $hddInfo); my $diskMount=$diskInfo[0]; if (defined($diskMount)) { my $diskSize=int($diskInfo[1]); my $diskUsed=int($diskInfo[2]); my $diskLeft=int($diskInfo[3]); my $diskSizeGB=(($diskSize/1024)/1024); $diskSizeGB=~/(\d+\.\d{2})/; $diskSizeGB=$1; my $diskLeftGB=(($diskLeft/1024)/1024); $diskLeftGB=~/(\d+\.\d{2})/; $diskLeftGB=$1; my $diskUsedP=(($diskUsed/$diskSize)*100); $diskUsedP=~/(\d+\.\d{2})/; $diskUsedP=$1; if ($diskMount eq $part) { if ($diskUsedP > $crit) { critical("CRITICAL: $diskUsedP% used on $diskMount ($diskLeftGB GB left of $diskSizeGB GB)"); } elsif ($diskUsedP > $warn) { warning("WARNING: $diskUsedP% used on $diskMount ($diskLeftGB GB left of $diskSizeGB GB)"); } else { success("DISK OK: $diskUsedP% used on $diskMount ($diskLeftGB GB left of $diskSizeGB GB)"); } } else { critical("CRITICAL: $part not mounted."); } } else { critical("CRITICAL: No output!"); } } else { usage(); }