[Nagiosplug-checkins] CVS: nagiosplug/plugins check_ping.c,1.11,1.12

Karl DeBisschop kdebisschop at users.sourceforge.net
Sat Mar 1 22:04:01 CET 2003


Update of /cvsroot/nagiosplug/nagiosplug/plugins
In directory sc8-pr-cvs1:/tmp/cvs-serv7510/plugins

Modified Files:
	check_ping.c 
Log Message:
add logic to check multiple servers

Index: check_ping.c
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_ping.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** check_ping.c	13 Jan 2003 12:15:16 -0000	1.11
--- check_ping.c	2 Mar 2003 06:01:18 -0000	1.12
***************
*** 59,63 ****
  int get_threshold (char *, float *, int *);
  int validate_arguments (void);
! int run_ping (char *);
  void print_usage (void);
  void print_help (void);
--- 59,63 ----
  int get_threshold (char *, float *, int *);
  int validate_arguments (void);
! int run_ping (char *, char *);
  void print_usage (void);
  void print_help (void);
***************
*** 68,72 ****
  float wrta = UNKNOWN_TRIP_TIME;
  float crta = UNKNOWN_TRIP_TIME;
! char *server_address = NULL;
  int max_packets = -1;
  int verbose = FALSE;
--- 68,74 ----
  float wrta = UNKNOWN_TRIP_TIME;
  float crta = UNKNOWN_TRIP_TIME;
! char **addresses = NULL;
! int n_addresses;
! int max_addr = 1;
  int max_packets = -1;
  int verbose = FALSE;
***************
*** 82,85 ****
--- 84,90 ----
  	char *command_line = NULL;
  	int result = STATE_UNKNOWN;
+ 	int i;
+ 
+ 	addresses = malloc (max_addr);
  
  	if (process_arguments (argc, argv) == ERROR)
***************
*** 87,97 ****
  	exit;
  
- 	/* does the host address of number of packets argument come first? */
- #ifdef PING_PACKETS_FIRST
- 	asprintf (&command_line, PING_COMMAND, max_packets, server_address);
- #else
- 	asprintf (&command_line, PING_COMMAND, server_address, max_packets);
- #endif
- 
  	/* Set signal handling and alarm */
  	if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) {
--- 92,95 ----
***************
*** 103,143 ****
  	alarm (timeout_interval);
  
! 	if (verbose)
! 		printf ("%s ==> ", command_line);
  
! 	/* run the command */
! 	run_ping (command_line);
  
! 	if (pl == UNKNOWN_PACKET_LOSS || rta == UNKNOWN_TRIP_TIME) {
! 		printf ("%s\n", command_line);
! 		terminate (STATE_UNKNOWN,
! 							 "Error: Could not interpret output from ping command\n");
! 	}
! 
! 	if (pl >= cpl || rta >= crta || rta < 0)
! 		result = STATE_CRITICAL;
! 	else if (pl >= wpl || rta >= wrta)
! 		result = STATE_WARNING;
! 	else if (pl < wpl && rta < wrta && pl >= 0 && rta >= 0)
! 		/* cannot use the max function because STATE_UNKNOWN is now 3 gt STATE_OK			
! 		result = max (result, STATE_OK);  */
! 		if( !( (result == STATE_WARNING) || (result == STATE_CRITICAL) )  ) {
! 			result = STATE_OK;	
  		}
  	
! 	if (display_html == TRUE)
! 		printf ("<A HREF='%s/traceroute.cgi?%s'>", CGIURL, server_address);
! 	if (pl == 100)
! 		printf ("PING %s - %sPacket loss = %d%%", state_text (result), warn_text,
! 						pl);
! 	else
! 		printf ("PING %s - %sPacket loss = %d%%, RTA = %2.2f ms",
! 						state_text (result), warn_text, pl, rta);
! 	if (display_html == TRUE)
! 		printf ("</A>");
! 	printf ("\n");
  
! 	if (verbose)
! 		printf ("%f:%d%% %f:%d%%\n", wrta, wpl, crta, cpl);
  
  	return result;
--- 101,151 ----
  	alarm (timeout_interval);
  
! 	for (i = 0 ; i < n_addresses ; i++) {
  
! 		/* does the host address of number of packets argument come first? */
! #ifdef PING_PACKETS_FIRST
! 		asprintf (&command_line, PING_COMMAND, max_packets, addresses[i]);
! #else
! 		asprintf (&command_line, PING_COMMAND, addresses[i], max_packets);
! #endif
! 
! 		if (verbose)
! 			printf ("%s ==> ", command_line);
! 
! 		/* run the command */
! 		run_ping (command_line, addresses[i]);
  
! 		if (pl == UNKNOWN_PACKET_LOSS || rta == UNKNOWN_TRIP_TIME) {
! 			printf ("%s\n", command_line);
! 			terminate (STATE_UNKNOWN,
! 								 "Error: Could not interpret output from ping command\n");
  		}
+ 
+ 		if (pl >= cpl || rta >= crta || rta < 0)
+ 			result = STATE_CRITICAL;
+ 		else if (pl >= wpl || rta >= wrta)
+ 			result = STATE_WARNING;
+ 		else if (pl < wpl && rta < wrta && pl >= 0 && rta >= 0)
+ 			/* cannot use the max function because STATE_UNKNOWN is now 3 gt STATE_OK			
+ 				 result = max (result, STATE_OK);  */
+ 			if( !( (result == STATE_WARNING) || (result == STATE_CRITICAL) )  ) {
+ 				result = STATE_OK;	
+ 			}
  	
! 		if (display_html == TRUE)
! 			printf ("<A HREF='%s/traceroute.cgi?%s'>", CGIURL, addresses[i]);
! 		if (pl == 100)
! 			printf ("PING %s - %sPacket loss = %d%%", state_text (result), warn_text,
! 							pl);
! 		else
! 			printf ("PING %s - %sPacket loss = %d%%, RTA = %2.2f ms",
! 							state_text (result), warn_text, pl, rta);
! 		if (display_html == TRUE)
! 			printf ("</A>");
! 		printf ("\n");
  
! 		if (verbose)
! 			printf ("%f:%d%% %f:%d%%\n", wrta, wpl, crta, cpl);
! 	}
  
  	return result;
***************
*** 201,205 ****
  			if (is_host (optarg) == FALSE)
  				usage2 ("Invalid host name/address", optarg);
! 			server_address = optarg;
  			break;
  		case 'p':	/* number of packets to send */
--- 209,220 ----
  			if (is_host (optarg) == FALSE)
  				usage2 ("Invalid host name/address", optarg);
! 			n_addresses++;
! 			if (n_addresses > max_addr) {
! 				max_addr *= 2;
! 				addresses = realloc (addresses, max_addr);
! 				if (addresses == NULL)
! 					terminate (STATE_UNKNOWN, "Could not realloc() addresses\n");
! 			}
! 			addresses[n_addresses-1] = optarg;
  			break;
  		case 'p':	/* number of packets to send */
***************
*** 228,237 ****
  		return validate_arguments ();
  
! 	if (server_address == NULL) {
  		if (is_host (argv[c]) == FALSE) {
  			printf ("Invalid host name/address: %s\n\n", argv[c]);
  			return ERROR;
  		} else {
! 			server_address = argv[c++];
  			if (c == argc)
  				return validate_arguments ();
--- 243,252 ----
  		return validate_arguments ();
  
! 	if (addresses[0] == NULL) {
  		if (is_host (argv[c]) == FALSE) {
  			printf ("Invalid host name/address: %s\n\n", argv[c]);
  			return ERROR;
  		} else {
! 			addresses[0] = argv[c++];
  			if (c == argc)
  				return validate_arguments ();
***************
*** 350,354 ****
  
  int
! run_ping (char *command_line)
  {
  	char input_buffer[MAX_INPUT_BUFFER];
--- 365,369 ----
  
  int
! run_ping (char *command_line, char *server_address)
  {
  	char input_buffer[MAX_INPUT_BUFFER];





More information about the Commits mailing list