فهرست منبع

check_fping now supports passing target timeout and interval to fping (#2347686 - Martin Foster)

Added support for passing timeout and interval length to check_fping.
To protect compatibility, both options use fping's defaults if they
are not specified on the command line.
Matthias Eble 16 سال پیش
والد
کامیت
843c652768
2فایلهای تغییر یافته به همراه31 افزوده شده و 4 حذف شده
  1. 1 0
      NEWS
  2. 30 4
      plugins/check_fping.c

+ 1 - 0
NEWS

@@ -38,6 +38,7 @@ This file documents the major additions and syntax changes between releases.
 	Fixed wrong perfdata label for output traffic in check_mrtgtraf (#2654308 - Gavin Williams)
 	Fixed check_by_ssh interpretation of quotes in -C parameter (#1985246, #2268675)
 	check_snmp now supports standard threshold ranges and doubles (floating numbers) in thresholds
+	check_fping now supports passing target timeout and interval to fping (#2347686 - Martin Foster)
 
 1.4.13 25th Sept 2008
 	Fix Debian bug #460097: check_http --max-age broken (Hilko Bengen)

+ 30 - 4
plugins/check_fping.c

@@ -54,6 +54,8 @@ void print_usage (void);
 char *server_name = NULL;
 int packet_size = PACKET_SIZE;
 int packet_count = PACKET_COUNT;
+int target_timeout = 0;
+int packet_interval = 0;
 int verbose = FALSE;
 int cpl;
 int wpl;
@@ -73,6 +75,7 @@ main (int argc, char **argv)
   char *server = NULL;
   char *command_line = NULL;
   char *input_buffer = NULL;
+  char *option_string = "";
   input_buffer = malloc (MAX_INPUT_BUFFER);
 
   setlocale (LC_ALL, "");
@@ -88,8 +91,13 @@ main (int argc, char **argv)
   server = strscpy (server, server_name);
 
   /* compose the command */
-  asprintf (&command_line, "%s -b %d -c %d %s", PATH_TO_FPING,
-            packet_size, packet_count, server);
+  if (target_timeout)
+    asprintf(&option_string, "%s-t %d ", option_string, target_timeout);
+  if (packet_interval)
+    asprintf(&option_string, "%s-p %d ", option_string, packet_interval);
+
+  asprintf (&command_line, "%s %s-b %d -c %d %s", PATH_TO_FPING,
+            option_string, packet_size, packet_count, server);
 
   if (verbose)
     printf ("%s\n", command_line);
@@ -228,6 +236,8 @@ process_arguments (int argc, char **argv)
     {"warning", required_argument, 0, 'w'},
     {"bytes", required_argument, 0, 'b'},
     {"number", required_argument, 0, 'n'},
+    {"target-timeout", required_argument, 0, 'T'},
+    {"interval", required_argument, 0, 'i'},
     {"verbose", no_argument, 0, 'v'},
     {"version", no_argument, 0, 'V'},
     {"help", no_argument, 0, 'h'},
@@ -248,7 +258,7 @@ process_arguments (int argc, char **argv)
   }
 
   while (1) {
-    c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", longopts, &option);
+    c = getopt_long (argc, argv, "+hVvH:c:w:b:n:T:i:", longopts, &option);
 
     if (c == -1 || c == EOF || c == 1)
       break;
@@ -309,6 +319,18 @@ process_arguments (int argc, char **argv)
       else
         usage (_("Packet count must be a positive integer"));
       break;
+    case 'T':                 /* timeout in msec */
+      if (is_intpos (optarg))
+        target_timeout = atoi (optarg);
+      else
+        usage (_("Target timeout must be a positive integer"));
+      break;
+    case 'i':                 /* interval in msec */
+      if (is_intpos (optarg))
+        packet_interval = atoi (optarg);
+      else
+        usage (_("Interval must be a positive integer"));
+      break;
     }
   }
 
@@ -390,6 +412,10 @@ print_help (void)
   printf ("    %s (default: %d)\n", _("size of ICMP packet"),PACKET_SIZE);
   printf (" %s\n", "-n, --number=INTEGER");
   printf ("    %s (default: %d)\n", _("number of ICMP packets to send"),PACKET_COUNT);
+  printf (" %s\n", "-T, --target-timeout=INTEGER");
+  printf ("    %s (default: fping's default for -t)\n", _("Target timeout (ms)"),PACKET_COUNT);
+  printf (" %s\n", "-i, --interval=INTEGER");
+  printf ("    %s (default: fping's default for -p)\n", _("Interval (ms) between sending packets"),PACKET_COUNT);
   printf (_(UT_VERBOSE));
   printf ("\n");
   printf (" %s\n", _("THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time (ms)"));
@@ -410,5 +436,5 @@ void
 print_usage (void)
 {
   printf (_("Usage:"));
-  printf (" %s <host_address> -w limit -c limit [-b size] [-n number]\n", progname);
+  printf (" %s <host_address> -w limit -c limit [-b size] [-n number] [-T number] [-i number]\n", progname);
 }