#!/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.=" Performancedaten zum Auswerten der belegten Inodes aus.\n\n";
my $syntax="./check_inode -w XXX -c XXX -d /dev/sdX\n\n";


while ( my ($key, $value) = each(%opts) ) {

        if ($key eq "w" && defined($value) && $value =~ /\d+/ )
          {
           #print "Warning ist gesetzt\n";
           $warning=$value;
          }

        if ($key eq "c" && defined($value) && $value =~ /\d+/ )
          {
           #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 ($inodesbenutzt)=check($device);

        if ($inodesbenutzt < $warning && $inodesbenutzt < $critical)
          {
           print "OK: $inodesbenutzt Inodes belegt | inodesbelegt=$inodesbenutzt;$warning;$critical\n";
           exit 0;
          }

        elsif ($inodesbenutzt >= $warning && $inodesbenutzt < $critical)
          {
           print "WARNING: $inodesbenutzt Inodes belegt | inodesbelegt=$inodesbenutzt;$warning;$critical\n";
           exit 1;
          }

        elsif ($inodesbenutzt > $warning && $inodesbenutzt >= $critical)
          {
           print "CRITICAL: $inodesbenutzt Inodes belegt | inodesbelegt=$inodesbenutzt;$warning;$critical\n";
           exit 2;
          }
        else
            {
             print "UNKNOWN: $inodesbenutzt Inodes belegt | inodesbelegt=$inodesbenutzt;$warning;$critical\n";
             exit 3;
            }

       }

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;
   }

