From 58fad23452357dae19db896c06c025592f6d34c9 Mon Sep 17 00:00:00 2001
From: Ethan Galstad <egalstad@users.sourceforge.net>
Date: Thu, 18 Apr 2002 21:59:26 +0000
Subject: add check_inodes contrib plugin by John Jolet

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@16 f882894a-f735-0410-b71e-b25c423dba1c

diff --git a/contrib/check_inodes.pl b/contrib/check_inodes.pl
new file mode 100755
index 0000000..5767878
--- /dev/null
+++ b/contrib/check_inodes.pl
@@ -0,0 +1,69 @@
+#!/usr/bin/perl 
+##############################################################################
+# This plugin uses df to gather filesystem statistics and check the percent  #
+# used of inodes.  I've put a switch in here since i've got both aix and     #
+# linux systems...adjust for your syntax's results.                          #
+# Note: the percentages passed in MUST NOT have % after them                 #
+# No warranty is either implied, nor expressed herein.                       #
+#                                                                            #
+##############################################################################
+
+$filesystem = $ARGV[0];
+$warnpercent = $ARGV[1];
+$critpercent = $ARGV[2];
+
+#------Find out what kind of syntax to expect
+$systype=`uname`;
+chomp($systype);
+
+#------Make sure we got called with the right number of arguments
+#------you could also put a check in here to make sure critical level is
+#------greater than warning...but what the heck.
+die "Usage: check_inodes filesystem warnpercent critpercent" unless @ARGV;
+
+if ($#ARGV < 2) {
+  die "Usage: check_inodes filesystem warnpercent critpercent";
+}#end if
+
+#------This gets the data from the df command
+$inputline = `df -i $filesystem|grep -v "Filesystem"`;
+
+#------replaces all spaces with a single :, that way we can use split
+$inputline =~ y/ /:/s;
+
+#------different oses give back different sets of columns from the df -i
+#------(at least mine do).  This way I can use this plugin on all my hosts
+#------if neither of these work, add your own in, or if you've got one that
+#------just flat out reports something different...well...perl is your friend.
+SWITCH: {
+  if ($systype eq "Linux") {
+    ($fs,$inodes,$iused,$ifree,$ipercent,$mntpt) = split(/:/,$inputline); 
+    last SWITCH;
+  }#end if
+  if ($systype eq "AIX") {
+    ($fs,$blks,$free,$percentused,$iused,$ipercent,$mntpt) = split(/:/,$inputline); 
+    last SWITCH;
+  }#end if
+}#end switch
+
+#------First we check for critical, since that is, by definition and convention
+#------going to exceed the warning threshold
+$ipercent =~ y/%//ds;
+
+if ($ipercent > $critpercent) {
+  print "CRITICAL: $filesystem inode use exceeds critical threshold $critpercent ($ipercent)";
+  exit 1;
+}# end if
+
+#------Next we check the warning threshold
+if ($ipercent > $warnpercent) {
+  print "WARNING: $filesystem inode use exceeds warning threshold $warnpercent ($ipercent)";
+  exit 2;
+}# end if
+
+
+#------thanks to the magic of procedural programming, we figure if we got here,
+#------everything MUST be fine.
+print "$filesystem inode use within limits ($ipercent)";
+exit 0;
+
-- 
cgit v0.10-9-g596f

