[Nagiosplug-checkins] CVS: nagiosplug/plugins check_disk.c,1.5,1.6

Karl DeBisschop kdebisschop at users.sourceforge.net
Sun Jan 12 20:51:03 CET 2003


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

Modified Files:
	check_disk.c 
Log Message:
add options for excluding devices and for skipping OK devices in summary

Index: check_disk.c
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_disk.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** check_disk.c	18 Nov 2002 07:23:15 -0000	1.5
--- check_disk.c	13 Jan 2003 04:50:03 -0000	1.6
***************
*** 37,41 ****
  #include <stdarg.h>
  
- #define PROGNAME "check_disk"
  #define REVISION "$Revision$"
  #define COPYRIGHT "2000-2002"
--- 37,40 ----
***************
*** 47,50 ****
--- 46,51 ----
  void print_usage (void);
  
+ const char *PROGNAME = "check_disk";
+ 
  int w_df = -1;
  int c_df = -1;
***************
*** 52,62 ****
  float c_dfp = -1.0;
  char *path = "";
! int verbose = FALSE;
  int display_mntp = FALSE;
  
  int
  main (int argc, char **argv)
  {
- 	int len;
  	int usp = -1;
  	int total_disk = -1;
--- 53,64 ----
  float c_dfp = -1.0;
  char *path = "";
! char *exclude_device = "";
! int verbose = 0;
  int display_mntp = FALSE;
  
+ 
  int
  main (int argc, char **argv)
  {
  	int usp = -1;
  	int total_disk = -1;
***************
*** 64,73 ****
  	int free_disk = -1;
  	int result = STATE_UNKNOWN;
! 	int temp_result = STATE_UNKNOWN;
! 	char *command_line = NULL;
! 	char input_buffer[MAX_INPUT_BUFFER] = "";
! 	char file_system[MAX_INPUT_BUFFER] = "";
! 	char mntp[MAX_INPUT_BUFFER] = "";
! 	char outbuf[MAX_INPUT_BUFFER] = "";
  	char *output = "";
  
--- 66,74 ----
  	int free_disk = -1;
  	int result = STATE_UNKNOWN;
! 	int disk_result = STATE_UNKNOWN;
! 	char *command_line = "";
! 	char input_buffer[MAX_INPUT_BUFFER];
! 	char file_system[MAX_INPUT_BUFFER];
! 	char mntp[MAX_INPUT_BUFFER];
  	char *output = "";
  
***************
*** 77,81 ****
  	asprintf (&command_line, "%s %s", DF_COMMAND, path);
  
! 	if (verbose)
  		printf ("%s ==> ", command_line);
  
--- 78,82 ----
  	asprintf (&command_line, "%s %s", DF_COMMAND, path);
  
! 	if (verbose>0)
  		printf ("%s ==> ", command_line);
  
***************
*** 96,108 ****
  			continue;
  
! 		if (sscanf
! 				(input_buffer, "%s %d %d %d %d%% %s", file_system, &total_disk,
! 				 &used_disk, &free_disk, &usp, &mntp) == 6
! 				|| sscanf (input_buffer, "%s %*s %d %d %d %d%% %s", file_system,
! 				 &total_disk, &used_disk, &free_disk, &usp, &mntp) == 6) {
! 			asprintf (&output, "%s [%d kB (%d%%) free on %s]", output, free_disk,
! 			          100 - usp, display_mntp ? mntp : file_system);
! 			result = max_state (result, check_disk (usp, free_disk));
  		}
  		else {
  			printf ("Unable to read output:\n%s\n%s\n", command_line, input_buffer);
--- 97,124 ----
  			continue;
  
! 		if (sscanf (input_buffer, "%s %d %d %d %d%% %s", file_system,
! 		     &total_disk, &used_disk, &free_disk, &usp, mntp) == 6 ||
! 		    sscanf (input_buffer, "%s %*s %d %d %d %d%% %s", file_system,
! 				 &total_disk, &used_disk, &free_disk, &usp, mntp) == 6) {
! 
!  			if (strcmp(exclude_device,file_system) == 0 ||
! 			    strcmp(exclude_device,mntp) == 0) {
!  				if (verbose>0)
!  					printf ("ignoring %s.", file_system);
! 				continue;
!  			}
! 
! 			disk_result = check_disk (usp, free_disk);
! 
! 			if (strcmp (file_system, "none") == 0)
! 				strncpy (file_system, mntp, MAX_INPUT_BUFFER-1);
! 
! 			if (disk_result!=STATE_OK || verbose>=0) 
! 				asprintf (&output, "%s [%d kB (%d%%) free on %s]", output,
! 				          free_disk, 100 - usp, display_mntp ? mntp : file_system);
! 
! 			result = max_state (result, disk_result);
  		}
+ 
  		else {
  			printf ("Unable to read output:\n%s\n%s\n", command_line, input_buffer);
***************
*** 113,131 ****
  
  	/* If we get anything on stderr, at least set warning */
! 	while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr))
! 		/*result = max (result, STATE_WARNING); */
! 		if( !( result == STATE_CRITICAL) ) {
  			result = STATE_WARNING;
  		}
  
  	/* close stderr */
! 	(void) fclose (child_stderr);
  
  	/* close the pipe */
! 	if (spclose (child_process))
! 		/*result = max (result, STATE_WARNING); */
! 		if( !( result == STATE_CRITICAL) ) {
  			result = STATE_WARNING;
! 		}
  	if (usp < 0)
  		printf ("Disk \"%s\" not mounted or nonexistant\n", path);
--- 129,146 ----
  
  	/* If we get anything on stderr, at least set warning */
! 	while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) {
! 		if (result != STATE_CRITICAL) {
  			result = STATE_WARNING;
  		}
+ 	}
  
  	/* close stderr */
! 	if (child_stderr) 
! 		(void) fclose (child_stderr);
  
  	/* close the pipe */
! 	if (spclose(child_process)!=0 && result!=STATE_CRITICAL)
  			result = STATE_WARNING;
! 
  	if (usp < 0)
  		printf ("Disk \"%s\" not mounted or nonexistant\n", path);
***************
*** 133,137 ****
  		printf ("Unable to read output\n%s\n%s\n", command_line, input_buffer);
  	else
! 		printf ("DISK %s -%s\n", state_text (result), output);
  
  	return result;
--- 148,152 ----
  		printf ("Unable to read output\n%s\n%s\n", command_line, input_buffer);
  	else
! 		printf ("DISK %s%s\n", state_text (result), output);
  
  	return result;
***************
*** 156,159 ****
--- 171,177 ----
  		{"help", no_argument, 0, 'h'},
  		{"mountpoint", no_argument, 0, 'm'},
+ 		{"exclude_device", required_argument, 0, 'x'},
+ 		{"quiet", no_argument, 0, 'q'},
+ 
  		{0, 0, 0, 0}
  	};
***************
*** 170,176 ****
  #ifdef HAVE_GETOPT_H
  		c =
! 			getopt_long (argc, argv, "Vhvt:c:w:p:m", long_options, &option_index);
  #else
! 		c = getopt (argc, argv, "Vhvt:c:w:p:m");
  #endif
  
--- 188,194 ----
  #ifdef HAVE_GETOPT_H
  		c =
!  			getopt_long (argc, argv, "+?Vqhvt:c:w:p:x:m", long_options, &option_index);
  #else
!  		c = getopt (argc, argv, "+?Vqhvt:c:w:p:x:m");
  #endif
  
***************
*** 223,231 ****
  			break;
  		case 'v':									/* verbose */
! 			verbose = TRUE;
  			break;
  		case 'm': /* display mountpoint */
  			display_mntp = TRUE;
  			break;
  		case 'V':									/* version */
  			print_revision (PROGNAME, REVISION);
--- 241,255 ----
  			break;
  		case 'v':									/* verbose */
! 			verbose++;
! 			break;
! 		case 'q':									/* verbose */
! 			verbose--;
  			break;
  		case 'm': /* display mountpoint */
  			display_mntp = TRUE;
  			break;
+  		case 'x':									/* exclude path or partition */
+  			exclude_device = optarg;
+  			break;
  		case 'V':									/* version */
  			print_revision (PROGNAME, REVISION);
***************
*** 312,324 ****
  		 "   Exit with WARNING status if less than INTEGER kilobytes of disk are free\n"
  		 " -w, --warning=PERCENT%%\n"
! 		 "   Exit with WARNING status if more than PERCENT of disk space is free\n"
  		 " -c, --critical=INTEGER\n"
  		 "   Exit with CRITICAL status if less than INTEGER kilobytes of disk are free\n"
  		 " -c, --critical=PERCENT%%\n"
! 		 "   Exit with CRITCAL status if more than PERCENT of disk space is free\n"
  		 " -p, --path=PATH, --partition=PARTTION\n"
  		 "    Path or partition (checks all mounted partitions if unspecified)\n"
  		 " -m, --mountpoint\n"
  		 "    Display the mountpoint instead of the partition\n"
  		 " -v, --verbose\n"
  		 "    Show details for command-line debugging (do not use with nagios server)\n"
--- 336,352 ----
  		 "   Exit with WARNING status if less than INTEGER kilobytes of disk are free\n"
  		 " -w, --warning=PERCENT%%\n"
! 		 "   Exit with WARNING status if less than PERCENT of disk space is free\n"
  		 " -c, --critical=INTEGER\n"
  		 "   Exit with CRITICAL status if less than INTEGER kilobytes of disk are free\n"
  		 " -c, --critical=PERCENT%%\n"
! 		 "   Exit with CRITCAL status if less than PERCENT of disk space is free\n"
  		 " -p, --path=PATH, --partition=PARTTION\n"
  		 "    Path or partition (checks all mounted partitions if unspecified)\n"
  		 " -m, --mountpoint\n"
  		 "    Display the mountpoint instead of the partition\n"
+ 		 " -x, --exclude_device=PATH\n"
+ 		 "    Ignore device (only works if -p unspecified)\n"
+ 		 " -e, --errors-only\n"
+ 		 "    Display only devices/mountpoints with errors\n"
  		 " -v, --verbose\n"
  		 "    Show details for command-line debugging (do not use with nagios server)\n"
***************
*** 333,337 ****
  {
  	printf
! 		("Usage: %s -w limit -c limit [-p path] [-t timeout] [-m] [--verbose]\n"
  		 "       %s (-h|--help)\n"
  		 "       %s (-V|--version)\n", PROGNAME, PROGNAME, PROGNAME);
--- 361,365 ----
  {
  	printf
! 		("Usage: %s -w limit -c limit [-p path | -x device] [-t timeout] [-m] [-e] [--verbose]\n"
  		 "       %s (-h|--help)\n"
  		 "       %s (-V|--version)\n", PROGNAME, PROGNAME, PROGNAME);





More information about the Commits mailing list