[nagiosplug] check_fping error handling enhanced, generates ...

Nagios Plugin Development nagios-plugins at users.sourceforge.net
Sun Aug 18 20:40:14 CEST 2013


 Module: nagiosplug
 Branch: master
 Commit: 96ec686004b13a76eac081db5d0883db6ae08963
 Author: Steve Weinreich <steve at weinreich.org>
   Date: Sun Aug 18 19:40:42 2013 +0200
    URL: http://nagiosplug.git.sf.net/git/gitweb.cgi?p=nagiosplug/nagiosplug;a=commit;h=96ec686

check_fping error handling enhanced, generates UNKNOWN on
fping parameter error (i.e. wrong interface, missing perms ..)

---

 plugins/check_fping.c |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/plugins/check_fping.c b/plugins/check_fping.c
index fde1d79..c7cce97 100644
--- a/plugins/check_fping.c
+++ b/plugins/check_fping.c
@@ -74,6 +74,7 @@ main (int argc, char **argv)
 /* normaly should be  int result = STATE_UNKNOWN; */
 
   int status = STATE_UNKNOWN;
+  int result = 0;
   char *fping_prog = NULL;
   char *server = NULL;
   char *command_line = NULL;
@@ -146,10 +147,24 @@ main (int argc, char **argv)
   (void) fclose (child_stderr);
 
   /* close the pipe */
-  if (spclose (child_process))
+  if (result = spclose (child_process))
     /* need to use max_state not max */
     status = max_state (status, STATE_WARNING);
 
+  if (result > 1 ) {
+    status = max_state (status, STATE_UNKNOWN);
+    if (result == 2) {
+      die (STATE_UNKNOWN, _("FPING UNKNOWN - IP address not found\n"));
+    }
+    if (result == 3) {
+      die (STATE_UNKNOWN, _("FPING UNKNOWN - invalid commandline argument\n"));
+    }
+    if (result == 4) {
+      die (STATE_UNKNOWN, _("FPING UNKNOWN - failed system call\n"));
+    }
+
+  }
+
   printf ("FPING %s - %s\n", state_text (status), server_name);
 
   return status;
@@ -175,6 +190,10 @@ textscan (char *buf)
                "host");
 
   }
+  else if (strstr (buf, "Operation not permitted") || strstr (buf, "No such device") ) {
+    die (STATE_UNKNOWN, _("FPING UNKNOWN - %s parameter error\n"),
+               "host");
+  }
   else if (strstr (buf, "is down")) {
     die (STATE_CRITICAL, _("FPING CRITICAL - %s is down\n"), server_name);
 





More information about the Commits mailing list