diff options
author | Ton Voon <tonvoon@users.sourceforge.net> | 2006-03-29 16:33:36 +0000 |
---|---|---|
committer | Ton Voon <tonvoon@users.sourceforge.net> | 2006-03-29 16:33:36 +0000 |
commit | f5c1cf6dd406be0b795f7388617d5469c6a358be (patch) | |
tree | 841b908d652b621846457a1e46f12c397a315286 /plugins/check_tcp.c | |
parent | a0f387467691292fe62c66e56fbc8476c7ecbb2d (diff) | |
download | monitoring-plugins-f5c1cf6dd406be0b795f7388617d5469c6a358be.tar.gz |
New function to for escaped strings from command line for send/quit.
Adapted from Sebastian Wiesinger's patch (1292404)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1365 f882894a-f735-0410-b71e-b25c423dba1c
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; static char *server_address = NULL; static char *server_send = NULL; static char *server_quit = NULL; -char *lineend = ""; -char *lineendquit = "\r\n"; static char **server_expect; static size_t server_expect_count = 0; static size_t maxbytes = 0; @@ -246,6 +244,12 @@ main (int argc, char **argv) } if(flags & FLAG_VERBOSE) { + if (server_send) { + printf("Send string: %s\n", server_send); + } + if (server_quit) { + printf("Quit string: %s\n", server_quit); + } printf("server_expect_count: %d\n", (int)server_expect_count); for(i = 0; i < server_expect_count; i++) printf("\t%d: %s\n", i, server_expect[i]); @@ -364,6 +368,7 @@ static int process_arguments (int argc, char **argv) { int c; + int escape = 0; int option = 0; static struct option longopts[] = { @@ -375,7 +380,7 @@ process_arguments (int argc, char **argv) {"timeout", required_argument, 0, 't'}, {"protocol", required_argument, 0, 'P'}, {"port", required_argument, 0, 'p'}, - {"lineend", required_argument, 0, 'l'}, + {"escape", required_argument, 0, 'E'}, {"send", required_argument, 0, 's'}, {"expect", required_argument, 0, 'e'}, {"maxbytes", required_argument, 0, 'm'}, @@ -417,7 +422,7 @@ process_arguments (int argc, char **argv) } while (1) { - c = getopt_long (argc, argv, "+hVv46H:l:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:", + c = getopt_long (argc, argv, "+hVv46EH:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:", longopts, &option); if (c == -1 || c == EOF || c == 1) @@ -485,30 +490,14 @@ process_arguments (int argc, char **argv) else server_port = atoi (optarg); break; - case 'l': - switch (*optarg) { - case 'n': - lineend = strdup("\n"); - lineendquit = lineend; - break; - case 'r': - lineend = strdup("\r"); - lineendquit = lineend; - break; - case 'b': - lineend = strdup("\r\n"); - lineendquit = lineend; - break; - case 'e': - lineend = strdup(""); - lineendquit = lineend; - break; - default: - usage4 (_("Unrecognized option to -l, must be r, n, b or e")); - } + case 'E': + escape = 1; break; case 's': - asprintf(&server_send, "%s%s", optarg, lineend); + if (escape) + server_send = np_escaped_string(optarg); + else + asprintf(&server_send, "%s", optarg); break; case 'e': /* expect string (may be repeated) */ EXPECT = NULL; @@ -525,7 +514,10 @@ process_arguments (int argc, char **argv) else maxbytes = strtol (optarg, NULL, 0); case 'q': - asprintf(&server_quit, "%s%s", optarg, lineendquit); + if (escape) + server_quit = np_escaped_string(optarg); + else + asprintf(&server_quit, "%s\r\n", optarg); break; case 'r': if (!strncmp(optarg,"ok",2)) @@ -604,10 +596,9 @@ print_help (void) printf (_(UT_IPv46)); printf (_("\ - -l, --lineend=b|e|n|r\n\ - Ending on -s and -q strings. b - both: <cr><lf> style, e - empty no\n\ - end, n - newline: newline end, r - return: carriage return end\n\ - Default is \"-l e -s <send> -l b -q <quit>\".\n\ + -E, --escape\n\ + Can use \\n, \\r, \\t or \\ in send or quit string.\n\ + Default: nothing added to send, \\r\\n added to end of quit\n\ -s, --send=STRING\n\ String to send to the server\n\ -e, --expect=STRING\n\ @@ -653,6 +644,6 @@ 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>] [-M <mismatch state>] [-v] [-4|-6] [-j]\n\ - [-D <days to cert expiry>] [-S <use SSL>] [-l <n|r|b|e>]\n", progname); + [-D <days to cert expiry>] [-S <use SSL>] [-E]\n", progname); } |