diff options
Diffstat (limited to 'plugins/check_tcp.c')
-rw-r--r-- | plugins/check_tcp.c | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c index d8fc26e7..5fe024be 100644 --- a/plugins/check_tcp.c +++ b/plugins/check_tcp.c | |||
@@ -54,8 +54,6 @@ static int server_port = 0; | |||
54 | static char *server_address = NULL; | 54 | static char *server_address = NULL; |
55 | static char *server_send = NULL; | 55 | static char *server_send = NULL; |
56 | static char *server_quit = NULL; | 56 | static char *server_quit = NULL; |
57 | char *lineend = ""; | ||
58 | char *lineendquit = "\r\n"; | ||
59 | static char **server_expect; | 57 | static char **server_expect; |
60 | static size_t server_expect_count = 0; | 58 | static size_t server_expect_count = 0; |
61 | static size_t maxbytes = 0; | 59 | static size_t maxbytes = 0; |
@@ -246,6 +244,12 @@ main (int argc, char **argv) | |||
246 | } | 244 | } |
247 | 245 | ||
248 | if(flags & FLAG_VERBOSE) { | 246 | if(flags & FLAG_VERBOSE) { |
247 | if (server_send) { | ||
248 | printf("Send string: %s\n", server_send); | ||
249 | } | ||
250 | if (server_quit) { | ||
251 | printf("Quit string: %s\n", server_quit); | ||
252 | } | ||
249 | printf("server_expect_count: %d\n", (int)server_expect_count); | 253 | printf("server_expect_count: %d\n", (int)server_expect_count); |
250 | for(i = 0; i < server_expect_count; i++) | 254 | for(i = 0; i < server_expect_count; i++) |
251 | printf("\t%d: %s\n", i, server_expect[i]); | 255 | printf("\t%d: %s\n", i, server_expect[i]); |
@@ -364,6 +368,7 @@ static int | |||
364 | process_arguments (int argc, char **argv) | 368 | process_arguments (int argc, char **argv) |
365 | { | 369 | { |
366 | int c; | 370 | int c; |
371 | int escape = 0; | ||
367 | 372 | ||
368 | int option = 0; | 373 | int option = 0; |
369 | static struct option longopts[] = { | 374 | static struct option longopts[] = { |
@@ -375,7 +380,7 @@ process_arguments (int argc, char **argv) | |||
375 | {"timeout", required_argument, 0, 't'}, | 380 | {"timeout", required_argument, 0, 't'}, |
376 | {"protocol", required_argument, 0, 'P'}, | 381 | {"protocol", required_argument, 0, 'P'}, |
377 | {"port", required_argument, 0, 'p'}, | 382 | {"port", required_argument, 0, 'p'}, |
378 | {"lineend", required_argument, 0, 'l'}, | 383 | {"escape", required_argument, 0, 'E'}, |
379 | {"send", required_argument, 0, 's'}, | 384 | {"send", required_argument, 0, 's'}, |
380 | {"expect", required_argument, 0, 'e'}, | 385 | {"expect", required_argument, 0, 'e'}, |
381 | {"maxbytes", required_argument, 0, 'm'}, | 386 | {"maxbytes", required_argument, 0, 'm'}, |
@@ -417,7 +422,7 @@ process_arguments (int argc, char **argv) | |||
417 | } | 422 | } |
418 | 423 | ||
419 | while (1) { | 424 | while (1) { |
420 | c = getopt_long (argc, argv, "+hVv46H:l:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:", | 425 | c = getopt_long (argc, argv, "+hVv46EH:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:", |
421 | longopts, &option); | 426 | longopts, &option); |
422 | 427 | ||
423 | if (c == -1 || c == EOF || c == 1) | 428 | if (c == -1 || c == EOF || c == 1) |
@@ -485,30 +490,14 @@ process_arguments (int argc, char **argv) | |||
485 | else | 490 | else |
486 | server_port = atoi (optarg); | 491 | server_port = atoi (optarg); |
487 | break; | 492 | break; |
488 | case 'l': | 493 | case 'E': |
489 | switch (*optarg) { | 494 | escape = 1; |
490 | case 'n': | ||
491 | lineend = strdup("\n"); | ||
492 | lineendquit = lineend; | ||
493 | break; | ||
494 | case 'r': | ||
495 | lineend = strdup("\r"); | ||
496 | lineendquit = lineend; | ||
497 | break; | ||
498 | case 'b': | ||
499 | lineend = strdup("\r\n"); | ||
500 | lineendquit = lineend; | ||
501 | break; | ||
502 | case 'e': | ||
503 | lineend = strdup(""); | ||
504 | lineendquit = lineend; | ||
505 | break; | ||
506 | default: | ||
507 | usage4 (_("Unrecognized option to -l, must be r, n, b or e")); | ||
508 | } | ||
509 | break; | 495 | break; |
510 | case 's': | 496 | case 's': |
511 | asprintf(&server_send, "%s%s", optarg, lineend); | 497 | if (escape) |
498 | server_send = np_escaped_string(optarg); | ||
499 | else | ||
500 | asprintf(&server_send, "%s", optarg); | ||
512 | break; | 501 | break; |
513 | case 'e': /* expect string (may be repeated) */ | 502 | case 'e': /* expect string (may be repeated) */ |
514 | EXPECT = NULL; | 503 | EXPECT = NULL; |
@@ -525,7 +514,10 @@ process_arguments (int argc, char **argv) | |||
525 | else | 514 | else |
526 | maxbytes = strtol (optarg, NULL, 0); | 515 | maxbytes = strtol (optarg, NULL, 0); |
527 | case 'q': | 516 | case 'q': |
528 | asprintf(&server_quit, "%s%s", optarg, lineendquit); | 517 | if (escape) |
518 | server_quit = np_escaped_string(optarg); | ||
519 | else | ||
520 | asprintf(&server_quit, "%s\r\n", optarg); | ||
529 | break; | 521 | break; |
530 | case 'r': | 522 | case 'r': |
531 | if (!strncmp(optarg,"ok",2)) | 523 | if (!strncmp(optarg,"ok",2)) |
@@ -604,10 +596,9 @@ print_help (void) | |||
604 | printf (_(UT_IPv46)); | 596 | printf (_(UT_IPv46)); |
605 | 597 | ||
606 | printf (_("\ | 598 | printf (_("\ |
607 | -l, --lineend=b|e|n|r\n\ | 599 | -E, --escape\n\ |
608 | Ending on -s and -q strings. b - both: <cr><lf> style, e - empty no\n\ | 600 | Can use \\n, \\r, \\t or \\ in send or quit string.\n\ |
609 | end, n - newline: newline end, r - return: carriage return end\n\ | 601 | Default: nothing added to send, \\r\\n added to end of quit\n\ |
610 | Default is \"-l e -s <send> -l b -q <quit>\".\n\ | ||
611 | -s, --send=STRING\n\ | 602 | -s, --send=STRING\n\ |
612 | String to send to the server\n\ | 603 | String to send to the server\n\ |
613 | -e, --expect=STRING\n\ | 604 | -e, --expect=STRING\n\ |
@@ -653,6 +644,6 @@ Usage: %s -H host -p port [-w <warning time>] [-c <critical time>]\n\ | |||
653 | [-s <send string>] [-e <expect string>] [-q <quit string>]\n\ | 644 | [-s <send string>] [-e <expect string>] [-q <quit string>]\n\ |
654 | [-m <maximum bytes>] [-d <delay>] [-t <timeout seconds>]\n\ | 645 | [-m <maximum bytes>] [-d <delay>] [-t <timeout seconds>]\n\ |
655 | [-r <refuse state>] [-M <mismatch state>] [-v] [-4|-6] [-j]\n\ | 646 | [-r <refuse state>] [-M <mismatch state>] [-v] [-4|-6] [-j]\n\ |
656 | [-D <days to cert expiry>] [-S <use SSL>] [-l <n|r|b|e>]\n", progname); | 647 | [-D <days to cert expiry>] [-S <use SSL>] [-E]\n", progname); |
657 | } | 648 | } |
658 | 649 | ||