#!/usr/bin/perl -w

use strict;
use Getopt::Std;

my %opts;
my $warning=0;
my $critical=0;
my $device="UNDEF";;

getopt('wcd', \%opts);


my $version="0.1\n";
my $author="Tim Harsdorf\n";
my $desc="Nagios Plugin in Perl zum auslesen der belegten Inodes.\nDieses Script gibt Nagios";
   $desc.=" Performacedaten zum Auswerten der prozentual belegten Inodes aus.\n\n";
my $syntax="./check_inode -w XX -c XX -d /dev/sdX\n\n";


while ( my ($key, $value) = each(%opts) ) {

        if ($key eq "w" && defined($value) && $value =~ /\d{1,2}/ && $value < 100) 
          { 
           #print "Warning ist gesetzt\n"; 
           $warning=$value;
          }

        if ($key eq "c" && defined($value) && $value =~ /\d{1,2}/ && $value < 100) 
          { 
           #print "Critical ist gesetzt\n";  
           $critical=$value;
          }

        if ($key eq "d" && defined($value) && $value =~ /\/\w+\/\S+/) 
          { 
           #print "Device ist gesetzt\n";  
           $device=$value;
          }

     }


if ($warning >= $critical or $warning == 0 or $critical == 0 or $device eq "UNDEF") 
  { 
   usage(); 
   exit 3;
  }
   else
       { 
        my ($inodesges, $inodesbenutzt, $inodesfrei, $prozentbelegt, $mountpoint)=check($device); 

        if ($prozentbelegt < $warning && $prozentbelegt < $critical)
          {
           print "OK: $prozentbelegt% belegt | inodesbelegt=$prozentbelegt;$warning;$critical\n";
           exit 0;
          }
       

        elsif ($prozentbelegt >= $warning && $prozentbelegt < $critical)
          {
           print "WARNING: $prozentbelegt% belegt | inodesbelegt=$prozentbelegt;$warning;$critical\n";
           exit 1;
          } 

        elsif ($prozentbelegt > $warning && $prozentbelegt >= $critical)
          {
           print "CRITICAL: $prozentbelegt% belegt | inodesbelegt=$prozentbelegt;$warning;$critical\n";
           exit 3;
          }        
        else
            {
             print "UNKNOWN: $prozentbelegt% belegt | inodesbelegt=$prozentbelegt;$warning;$critical\n";
             exit 4;
            }

       }

sub usage
   {
    print "Author: ".$author;
    print "Version: ".$version;
    print $desc;
    print $syntax;

   }

sub check
   {
    my $inodes = qx (df -i $_[0] | grep $_[0]);
    $inodes =~ /\/\S+\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)%\s+(\S+)/;
    return $1, $2, $3, $4, $5;
   }

