summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 68eb45b)
raw | patch | inline | side by side (parent: 68eb45b)
author | Matthew Kent <mattkent@users.sourceforge.net> | |
Sat, 11 Dec 2004 06:25:07 +0000 (06:25 +0000) | ||
committer | Matthew Kent <mattkent@users.sourceforge.net> | |
Sat, 11 Dec 2004 06:25:07 +0000 (06:25 +0000) |
Also included another change from Ollie Cook to do stricter matching of expected values from the beginning of the line. When a user defines an expected string this is changed to the old style strstr matching.
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1025 f882894a-f735-0410-b71e-b25c423dba1c
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1025 f882894a-f735-0410-b71e-b25c423dba1c
plugins/check_tcp.c | patch | blob | history |
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index 7d8d814962aef737daf1a505bec8c2b24e21d783..b922536eba6b05ef97f56da50efcd6789e59cf41 100644 (file)
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
int use_ssl = FALSE;
int sd = 0;
char *buffer;
-
-
+int expect_mismatch_state = STATE_WARNING;
+int exact_matching = TRUE;
int
main (int argc, char **argv)
if (verbose)
printf ("%d %d\n", i, (int)server_expect_count);
if (i >= (int)server_expect_count)
- die (STATE_WARNING, _("Invalid response from host\n"));
- if (strstr (status, server_expect[i]))
- break;
+ die (expect_mismatch_state, _("Unexpected response from host: %s\n"), status);
+ /* default expect gets exact matching */
+ if (exact_matching) {
+ if (strncmp(status, server_expect[i], strlen(server_expect[i])) == 0)
+ break;
+ } else {
+ if (strstr (status, server_expect[i]))
+ break;
+ }
}
}
}
{"jail", required_argument, 0, 'j'},
{"delay", required_argument, 0, 'd'},
{"refuse", required_argument, 0, 'r'},
+ {"mismatch", required_argument, 0, 'M'},
{"use-ipv4", no_argument, 0, '4'},
{"use-ipv6", no_argument, 0, '6'},
{"verbose", no_argument, 0, 'v'},
}
while (1) {
- c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:",
+ c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:",
longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
case 'e': /* expect string (may be repeated) */
EXPECT = NULL;
+ exact_matching = FALSE;
if (server_expect_count == 0)
server_expect = malloc (sizeof (char *) * (++server_expect_count));
else
else
usage4 (_("Refuse must be one of ok, warn, crit"));
break;
+ case 'M':
+ if (!strncmp(optarg,"ok",2))
+ expect_mismatch_state = STATE_OK;
+ else if (!strncmp(optarg,"warn",4))
+ expect_mismatch_state = STATE_WARNING;
+ else if (!strncmp(optarg,"crit",4))
+ expect_mismatch_state = STATE_CRITICAL;
+ else
+ usage4 (_("Mismatch must be one of ok, warn, crit"));
+ break;
case 'd':
if (is_intpos (optarg))
delay = atoi (optarg);
printf (_("\
-r, --refuse=ok|warn|crit\n\
Accept tcp refusals with states ok, warn, crit (default: crit)\n\
+ -M, --mismatch=ok|warn|crit\n\
+ Accept expected string mismatches with states ok, warn, crit (default: warn)\n\
-j, --jail\n\
Hide output from TCP socket\n\
-m, --maxbytes=INTEGER\n\
Usage: %s -H host -p port [-w <warning time>] [-c <critical time>]\n\
[-s <send string>] [-e <expect string>] [-q <quit string>]\n\
[-m <maximum bytes>] [-d <delay>] [-t <timeout seconds>]\n\
- [-r <refuse state>] [-v] [-4|-6] [-j] [-D <days to cert expiry>]\n\
- [-S <use SSL>]\n", progname);
+ [-r <refuse state>] [-M <mismatch state>] [-v] [-4|-6] [-j]\n\
+ [-D <days to cert expiry>] [-S <use SSL>]\n", progname);
}