Package: nagios-plugins Severity: wishlist Tags: patch This patch adds an option to check_http to invert string matches (much like grep -v).
-- Robert Millan [EMAIL PROTECTED] Departamento de Asistencia Técnica Oficina central: (+34) 902 888 345 Asistencia técnica: (+34) 902 888 408 ACK STORM, S.L. http://www.ackstorm.es Este mensaje electrónico contiene información de ACK STORM, S.L. que es privada y confidencial, siendo para el uso exclusivo de las personas o entidades arriba mencionadas. Si usted no es el destinatario señalado, le informamos que cualquier divulgación, copia, distribución o uso de los contenidos está prohibida. Si usted ha recibido este mensaje por error, por favor borre su contenido y comuníquenoslo en la dirección [EMAIL PROTECTED] --------------------------------------------------
--- ../../old/nagios-plugins-1.4.3/plugins/check_http.c 2006-04-05 09:58:27.000000000 +0200 +++ check_http.c 2006-06-23 11:45:26.000000000 +0200 @@ -49,6 +49,7 @@ # define my_send(buf, len) send(sd, buf, len, 0) #endif /* HAVE_SSL */ int no_body = FALSE; +int invert_match = FALSE; int maximum_age = -1; #ifdef HAVE_REGEX_H @@ -174,6 +175,7 @@ {"ereg", required_argument, 0, 'r'}, {"eregi", required_argument, 0, 'R'}, {"linespan", no_argument, 0, 'l'}, + {"invert-match", no_argument, 0, 'i'}, {"onredirect", required_argument, 0, 'f'}, {"certificate", required_argument, 0, 'C'}, {"useragent", required_argument, 0, 'A'}, @@ -204,7 +206,7 @@ } while (1) { - c = getopt_long (argc, argv, "Vvh46t:c:w:A:k:H:P:T:I:a:e:p:s:R:r:u:f:C:nlLSm:M:N", longopts, &option); + c = getopt_long (argc, argv, "Vvh46t:c:w:A:k:H:P:T:I:a:e:p:s:R:r:iu:f:C:nlLSm:M:N", longopts, &option); if (c == -1 || c == EOF) break; @@ -333,6 +335,9 @@ case 'T': /* Content-type */ asprintf (&http_content_type, "%s", optarg); break; + case 'i': /* invert-match */ + invert_match = TRUE; + break; #ifndef HAVE_REGEX_H case 'l': /* linespan */ case 'r': /* linespan */ @@ -978,7 +983,7 @@ /* these checks should be last */ if (strlen (string_expect)) { - if (strstr (page, string_expect)) { + if (strstr (page, string_expect) && !invert_match) { printf (_("HTTP OK %s - %.3f second response time %s%s|%s %s\n"), status_line, elapsed_time, timestamp, (display_html ? "</A>" : ""), @@ -986,7 +991,7 @@ exit (STATE_OK); } else { - printf (_("CRITICAL - string not found%s|%s %s\n"), + printf (invert_match ? _("CRITICAL - string found%s|%s %s\n") : _("CRITICAL - string not found%s|%s %s\n"), (display_html ? "</A>" : ""), perfd_time (elapsed_time), perfd_size (pagesize)); exit (STATE_CRITICAL); @@ -995,6 +1000,15 @@ #ifdef HAVE_REGEX_H if (strlen (regexp)) { errcode = regexec (&preg, page, REGS, pmatch, 0); + + if (invert_match) + { + if (errcode == 0) + errcode = REG_NOMATCH; + else if (errcode == REG_NOMATCH) + errcode = 0; + } + if (errcode == 0) { printf (_("HTTP OK %s - %.3f second response time %s%s|%s %s\n"), status_line, elapsed_time, @@ -1004,7 +1018,7 @@ } else { if (errcode == REG_NOMATCH) { - printf (_("CRITICAL - pattern not found%s|%s %s\n"), + printf (invert_match ? _("CRITICAL - pattern found%s|%s %s\n") : _("CRITICAL - pattern not found%s|%s %s\n"), (display_html ? "</A>" : ""), perfd_time (elapsed_time), perfd_size (pagesize)); exit (STATE_CRITICAL); @@ -1268,7 +1282,9 @@ Warn if document is more than SECONDS old. the number can also be of \n\ the form \"10m\" for minutes, \"10h\" for hours, or \"10d\" for days.\n\ -T, --content-type=STRING\n\ - specify Content-Type header media type when POSTing\n"), HTTP_EXPECT); + specify Content-Type header media type when POSTing\n\ + -i, --invert-match\n\ + Select non-matching lines.\n"), HTTP_EXPECT); #ifdef HAVE_REGEX_H printf (_("\