Przeglądaj źródła

Merge pull request #336 from sanchezfauste/check_apt_packages_warning

Adding packages-warning option to check_apt plugin
Sebastian Wolf 6 lat temu
rodzic
commit
fa7cc48e28
1 zmienionych plików z 12 dodań i 3 usunięć
  1. 12 3
      plugins/check_apt.c

+ 12 - 3
plugins/check_apt.c

@@ -81,6 +81,8 @@ static char *do_include = NULL;  /* regexp to only include certain packages */
 static char *do_exclude = NULL;  /* regexp to only exclude certain packages */
 static char *do_exclude = NULL;  /* regexp to only exclude certain packages */
 static char *do_critical = NULL;  /* regexp specifying critical packages */
 static char *do_critical = NULL;  /* regexp specifying critical packages */
 static char *input_filename = NULL; /* input filename for testing */
 static char *input_filename = NULL; /* input filename for testing */
+/* number of packages available for upgrade to return WARNING status */
+static int packages_warning = 1;
 
 
 /* other global variables */
 /* other global variables */
 static int stderr_warning = 0;   /* if a cmd issued output on stderr */
 static int stderr_warning = 0;   /* if a cmd issued output on stderr */
@@ -111,7 +113,7 @@ int main (int argc, char **argv) {
 
 
 	if(sec_count > 0){
 	if(sec_count > 0){
 		result = max_state(result, STATE_CRITICAL);
 		result = max_state(result, STATE_CRITICAL);
-	} else if(packages_available > 0 && only_critical == 0){
+	} else if(packages_available >= packages_warning && only_critical == 0){
 		result = max_state(result, STATE_WARNING);
 		result = max_state(result, STATE_WARNING);
 	} else if(result > STATE_UNKNOWN){
 	} else if(result > STATE_UNKNOWN){
 		result = STATE_UNKNOWN;
 		result = STATE_UNKNOWN;
@@ -151,11 +153,12 @@ int process_arguments (int argc, char **argv) {
 		{"critical", required_argument, 0, 'c'},
 		{"critical", required_argument, 0, 'c'},
 		{"only-critical", no_argument, 0, 'o'},
 		{"only-critical", no_argument, 0, 'o'},
 		{"input-file", required_argument, 0, INPUT_FILE_OPT},
 		{"input-file", required_argument, 0, INPUT_FILE_OPT},
+		{"packages-warning", required_argument, 0, 'w'},
 		{0, 0, 0, 0}
 		{0, 0, 0, 0}
 	};
 	};
 
 
 	while(1) {
 	while(1) {
-		c = getopt_long(argc, argv, "hVvt:u::U::d::ni:e:c:o", longopts, NULL);
+		c = getopt_long(argc, argv, "hVvt:u::U::d::ni:e:c:ow:", longopts, NULL);
 
 
 		if(c == -1 || c == EOF || c == 1) break;
 		if(c == -1 || c == EOF || c == 1) break;
 
 
@@ -211,6 +214,9 @@ int process_arguments (int argc, char **argv) {
 		case INPUT_FILE_OPT:
 		case INPUT_FILE_OPT:
 			input_filename = optarg;
 			input_filename = optarg;
 			break;
 			break;
+		case 'w':
+			packages_warning = atoi(optarg);
+			break;
 		default:
 		default:
 			/* print short usage statement if args not parsable */
 			/* print short usage statement if args not parsable */
 			usage5();
 			usage5();
@@ -473,6 +479,9 @@ print_help (void)
   printf ("    %s\n", _("Only warn about upgrades matching the critical list.  The total number"));
   printf ("    %s\n", _("Only warn about upgrades matching the critical list.  The total number"));
   printf ("    %s\n", _("of upgrades will be printed, but any non-critical upgrades will not cause"));
   printf ("    %s\n", _("of upgrades will be printed, but any non-critical upgrades will not cause"));
   printf ("    %s\n\n", _("the plugin to return WARNING status."));
   printf ("    %s\n\n", _("the plugin to return WARNING status."));
+  printf (" %s\n", "-w, --packages-warning=INTEGER");
+  printf ("    %s\n", _("Minumum number of packages available for upgrade to return WARNING status."));
+  printf ("    %s\n\n", _("Default is 1 package."));
 
 
   printf ("%s\n\n", _("The following options require root privileges and should be used with care:"));
   printf ("%s\n\n", _("The following options require root privileges and should be used with care:"));
   printf (" %s\n", "-u, --update=OPTS");
   printf (" %s\n", "-u, --update=OPTS");
@@ -490,5 +499,5 @@ void
 print_usage(void)
 print_usage(void)
 {
 {
   printf ("%s\n", _("Usage:"));
   printf ("%s\n", _("Usage:"));
-  printf ("%s [[-d|-u|-U]opts] [-n] [-t timeout]\n", progname);
+  printf ("%s [[-d|-u|-U]opts] [-n] [-t timeout] [-w packages-warning]\n", progname);
 }
 }