diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_cluster.c | 10 | ||||
| -rw-r--r-- | plugins/check_dns.c | 36 | ||||
| -rw-r--r-- | plugins/check_hpjd.c | 12 | ||||
| -rw-r--r-- | plugins/check_http.c | 2 | ||||
| -rw-r--r-- | plugins/check_smtp.c | 1 | ||||
| -rw-r--r-- | plugins/t/NPTest.cache.travis | 2 | ||||
| -rwxr-xr-x | plugins/tests/check_snmp.t | 110 |
7 files changed, 108 insertions, 65 deletions
diff --git a/plugins/check_cluster.c b/plugins/check_cluster.c index b86e501d..e1ede9f7 100644 --- a/plugins/check_cluster.c +++ b/plugins/check_cluster.c | |||
| @@ -143,6 +143,7 @@ int main(int argc, char **argv){ | |||
| 143 | 143 | ||
| 144 | int process_arguments(int argc, char **argv){ | 144 | int process_arguments(int argc, char **argv){ |
| 145 | int c; | 145 | int c; |
| 146 | char *ptr; | ||
| 146 | int option=0; | 147 | int option=0; |
| 147 | static struct option longopts[]={ | 148 | static struct option longopts[]={ |
| 148 | {"data", required_argument,0,'d'}, | 149 | {"data", required_argument,0,'d'}, |
| @@ -188,6 +189,15 @@ int process_arguments(int argc, char **argv){ | |||
| 188 | 189 | ||
| 189 | case 'd': /* data values */ | 190 | case 'd': /* data values */ |
| 190 | data_vals=(char *)strdup(optarg); | 191 | data_vals=(char *)strdup(optarg); |
| 192 | /* validate data */ | ||
| 193 | for (ptr=data_vals;ptr!=NULL;ptr+=2){ | ||
| 194 | if (ptr[0]<'0' || ptr[0]>'3') | ||
| 195 | return ERROR; | ||
| 196 | if (ptr[1]=='\0') | ||
| 197 | break; | ||
| 198 | if (ptr[1]!=',') | ||
| 199 | return ERROR; | ||
| 200 | } | ||
| 191 | break; | 201 | break; |
| 192 | 202 | ||
| 193 | case 'l': /* text label */ | 203 | case 'l': /* text label */ |
diff --git a/plugins/check_dns.c b/plugins/check_dns.c index f2061636..d4d0b885 100644 --- a/plugins/check_dns.c +++ b/plugins/check_dns.c | |||
| @@ -56,6 +56,7 @@ char **expected_address = NULL; | |||
| 56 | int expected_address_cnt = 0; | 56 | int expected_address_cnt = 0; |
| 57 | 57 | ||
| 58 | int expect_authority = FALSE; | 58 | int expect_authority = FALSE; |
| 59 | int all_match = FALSE; | ||
| 59 | thresholds *time_thresholds = NULL; | 60 | thresholds *time_thresholds = NULL; |
| 60 | 61 | ||
| 61 | static int | 62 | static int |
| @@ -168,8 +169,8 @@ main (int argc, char **argv) | |||
| 168 | temp_buffer++; | 169 | temp_buffer++; |
| 169 | 170 | ||
| 170 | /* Strip leading spaces */ | 171 | /* Strip leading spaces */ |
| 171 | for (; *temp_buffer != '\0' && *temp_buffer == ' '; temp_buffer++) | 172 | while (*temp_buffer == ' ') |
| 172 | /* NOOP */; | 173 | temp_buffer++; |
| 173 | 174 | ||
| 174 | strip(temp_buffer); | 175 | strip(temp_buffer); |
| 175 | if (temp_buffer==NULL || strlen(temp_buffer)==0) { | 176 | if (temp_buffer==NULL || strlen(temp_buffer)==0) { |
| @@ -228,16 +229,27 @@ main (int argc, char **argv) | |||
| 228 | if (result == STATE_OK && expected_address_cnt > 0) { | 229 | if (result == STATE_OK && expected_address_cnt > 0) { |
| 229 | result = STATE_CRITICAL; | 230 | result = STATE_CRITICAL; |
| 230 | temp_buffer = ""; | 231 | temp_buffer = ""; |
| 232 | unsigned long expect_match = (1 << expected_address_cnt) - 1; | ||
| 233 | unsigned long addr_match = (1 << n_addresses) - 1; | ||
| 231 | 234 | ||
| 232 | for (i=0; i<expected_address_cnt; i++) { | 235 | for (i=0; i<expected_address_cnt; i++) { |
| 236 | int j; | ||
| 233 | /* check if we get a match on 'raw' ip or cidr */ | 237 | /* check if we get a match on 'raw' ip or cidr */ |
| 234 | if ( strcmp(address, expected_address[i]) == 0 | 238 | for (j=0; j<n_addresses; j++) { |
| 235 | || ip_match_cidr(address, expected_address[i]) ) | 239 | if ( strcmp(addresses[j], expected_address[i]) == 0 |
| 236 | result = STATE_OK; | 240 | || ip_match_cidr(addresses[j], expected_address[i]) ) { |
| 241 | result = STATE_OK; | ||
| 242 | addr_match &= ~(1 << j); | ||
| 243 | expect_match &= ~(1 << i); | ||
| 244 | } | ||
| 245 | } | ||
| 237 | 246 | ||
| 238 | /* prepare an error string */ | 247 | /* prepare an error string */ |
| 239 | xasprintf(&temp_buffer, "%s%s; ", temp_buffer, expected_address[i]); | 248 | xasprintf(&temp_buffer, "%s%s; ", temp_buffer, expected_address[i]); |
| 240 | } | 249 | } |
| 250 | /* check if expected_address must cover all in addresses and none may be missing */ | ||
| 251 | if (all_match && (expect_match != 0 || addr_match != 0)) | ||
| 252 | result = STATE_CRITICAL; | ||
| 241 | if (result == STATE_CRITICAL) { | 253 | if (result == STATE_CRITICAL) { |
| 242 | /* Strip off last semicolon... */ | 254 | /* Strip off last semicolon... */ |
| 243 | temp_buffer[strlen(temp_buffer)-2] = '\0'; | 255 | temp_buffer[strlen(temp_buffer)-2] = '\0'; |
| @@ -401,6 +413,7 @@ process_arguments (int argc, char **argv) | |||
| 401 | {"reverse-server", required_argument, 0, 'r'}, | 413 | {"reverse-server", required_argument, 0, 'r'}, |
| 402 | {"expected-address", required_argument, 0, 'a'}, | 414 | {"expected-address", required_argument, 0, 'a'}, |
| 403 | {"expect-authority", no_argument, 0, 'A'}, | 415 | {"expect-authority", no_argument, 0, 'A'}, |
| 416 | {"all", no_argument, 0, 'L'}, | ||
| 404 | {"warning", required_argument, 0, 'w'}, | 417 | {"warning", required_argument, 0, 'w'}, |
| 405 | {"critical", required_argument, 0, 'c'}, | 418 | {"critical", required_argument, 0, 'c'}, |
| 406 | {0, 0, 0, 0} | 419 | {0, 0, 0, 0} |
| @@ -414,7 +427,7 @@ process_arguments (int argc, char **argv) | |||
| 414 | strcpy (argv[c], "-t"); | 427 | strcpy (argv[c], "-t"); |
| 415 | 428 | ||
| 416 | while (1) { | 429 | while (1) { |
| 417 | c = getopt_long (argc, argv, "hVvAt:H:s:r:a:w:c:", long_opts, &opt_index); | 430 | c = getopt_long (argc, argv, "hVvALt:H:s:r:a:w:c:", long_opts, &opt_index); |
| 418 | 431 | ||
| 419 | if (c == -1 || c == EOF) | 432 | if (c == -1 || c == EOF) |
| 420 | break; | 433 | break; |
| @@ -462,6 +475,9 @@ process_arguments (int argc, char **argv) | |||
| 462 | case 'A': /* expect authority */ | 475 | case 'A': /* expect authority */ |
| 463 | expect_authority = TRUE; | 476 | expect_authority = TRUE; |
| 464 | break; | 477 | break; |
| 478 | case 'L': /* all must match */ | ||
| 479 | all_match = TRUE; | ||
| 480 | break; | ||
| 465 | case 'w': | 481 | case 'w': |
| 466 | warning = optarg; | 482 | warning = optarg; |
| 467 | break; | 483 | break; |
| @@ -530,14 +546,16 @@ print_help (void) | |||
| 530 | printf (" -a, --expected-address=IP-ADDRESS|CIDR|HOST\n"); | 546 | printf (" -a, --expected-address=IP-ADDRESS|CIDR|HOST\n"); |
| 531 | printf (" %s\n", _("Optional IP-ADDRESS/CIDR you expect the DNS server to return. HOST must end")); | 547 | printf (" %s\n", _("Optional IP-ADDRESS/CIDR you expect the DNS server to return. HOST must end")); |
| 532 | printf (" %s\n", _("with a dot (.). This option can be repeated multiple times (Returns OK if any")); | 548 | printf (" %s\n", _("with a dot (.). This option can be repeated multiple times (Returns OK if any")); |
| 533 | printf (" %s\n", _("value match). If multiple addresses are returned at once, you have to match")); | 549 | printf (" %s\n", _("value matches).")); |
| 534 | printf (" %s\n", _("the whole string of addresses separated with commas (sorted alphabetically).")); | ||
| 535 | printf (" -A, --expect-authority\n"); | 550 | printf (" -A, --expect-authority\n"); |
| 536 | printf (" %s\n", _("Optionally expect the DNS server to be authoritative for the lookup")); | 551 | printf (" %s\n", _("Optionally expect the DNS server to be authoritative for the lookup")); |
| 537 | printf (" -w, --warning=seconds\n"); | 552 | printf (" -w, --warning=seconds\n"); |
| 538 | printf (" %s\n", _("Return warning if elapsed time exceeds value. Default off")); | 553 | printf (" %s\n", _("Return warning if elapsed time exceeds value. Default off")); |
| 539 | printf (" -c, --critical=seconds\n"); | 554 | printf (" -c, --critical=seconds\n"); |
| 540 | printf (" %s\n", _("Return critical if elapsed time exceeds value. Default off")); | 555 | printf (" %s\n", _("Return critical if elapsed time exceeds value. Default off")); |
| 556 | printf (" -L, --all\n"); | ||
| 557 | printf (" %s\n", _("Return critical if the list of expected addresses does not match all addresses")); | ||
| 558 | printf (" %s\n", _("returned. Default off")); | ||
| 541 | 559 | ||
| 542 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | 560 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); |
| 543 | 561 | ||
| @@ -549,5 +567,5 @@ void | |||
| 549 | print_usage (void) | 567 | print_usage (void) |
| 550 | { | 568 | { |
| 551 | printf ("%s\n", _("Usage:")); | 569 | printf ("%s\n", _("Usage:")); |
| 552 | printf ("%s -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit]\n", progname); | 570 | printf ("%s -H host [-s server] [-a expected-address] [-A] [-t timeout] [-w warn] [-c crit] [-L]\n", progname); |
| 553 | } | 571 | } |
diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c index f159f5a2..65465567 100644 --- a/plugins/check_hpjd.c +++ b/plugins/check_hpjd.c | |||
| @@ -67,6 +67,7 @@ void print_usage (void); | |||
| 67 | char *community = NULL; | 67 | char *community = NULL; |
| 68 | char *address = NULL; | 68 | char *address = NULL; |
| 69 | char *port = NULL; | 69 | char *port = NULL; |
| 70 | int check_paper_out = 1; | ||
| 70 | 71 | ||
| 71 | int | 72 | int |
| 72 | main (int argc, char **argv) | 73 | main (int argc, char **argv) |
| @@ -240,7 +241,8 @@ main (int argc, char **argv) | |||
| 240 | strcpy (errmsg, _("Paper Jam")); | 241 | strcpy (errmsg, _("Paper Jam")); |
| 241 | } | 242 | } |
| 242 | else if (paper_out) { | 243 | else if (paper_out) { |
| 243 | result = STATE_WARNING; | 244 | if (check_paper_out) |
| 245 | result = STATE_WARNING; | ||
| 244 | strcpy (errmsg, _("Out of Paper")); | 246 | strcpy (errmsg, _("Out of Paper")); |
| 245 | } | 247 | } |
| 246 | else if (line_status == OFFLINE) { | 248 | else if (line_status == OFFLINE) { |
| @@ -325,7 +327,7 @@ process_arguments (int argc, char **argv) | |||
| 325 | 327 | ||
| 326 | 328 | ||
| 327 | while (1) { | 329 | while (1) { |
| 328 | c = getopt_long (argc, argv, "+hVH:C:p:", longopts, &option); | 330 | c = getopt_long (argc, argv, "+hVH:C:p:D", longopts, &option); |
| 329 | 331 | ||
| 330 | if (c == -1 || c == EOF || c == 1) | 332 | if (c == -1 || c == EOF || c == 1) |
| 331 | break; | 333 | break; |
| @@ -347,6 +349,8 @@ process_arguments (int argc, char **argv) | |||
| 347 | usage2 (_("Port must be a positive short integer"), optarg); | 349 | usage2 (_("Port must be a positive short integer"), optarg); |
| 348 | else | 350 | else |
| 349 | port = atoi(optarg); | 351 | port = atoi(optarg); |
| 352 | case 'D': /* disable paper out check*/ | ||
| 353 | check_paper_out = 0; | ||
| 350 | break; | 354 | break; |
| 351 | case 'V': /* version */ | 355 | case 'V': /* version */ |
| 352 | print_revision (progname, NP_VERSION); | 356 | print_revision (progname, NP_VERSION); |
| @@ -420,6 +424,8 @@ print_help (void) | |||
| 420 | printf (" %s", _("Specify the port to check ")); | 424 | printf (" %s", _("Specify the port to check ")); |
| 421 | printf (_("(default=%s)"), DEFAULT_PORT); | 425 | printf (_("(default=%s)"), DEFAULT_PORT); |
| 422 | printf ("\n"); | 426 | printf ("\n"); |
| 427 | printf (" %s\n", "-D"); | ||
| 428 | printf (" %s", _("Disable paper check ")); | ||
| 423 | 429 | ||
| 424 | printf (UT_SUPPORT); | 430 | printf (UT_SUPPORT); |
| 425 | } | 431 | } |
| @@ -430,5 +436,5 @@ void | |||
| 430 | print_usage (void) | 436 | print_usage (void) |
| 431 | { | 437 | { |
| 432 | printf ("%s\n", _("Usage:")); | 438 | printf ("%s\n", _("Usage:")); |
| 433 | printf ("%s -H host [-C community] [-p port]\n", progname); | 439 | printf ("%s -H host [-C community] [-p port] [-D]\n", progname); |
| 434 | } | 440 | } |
diff --git a/plugins/check_http.c b/plugins/check_http.c index 856e1e90..de59a068 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c | |||
| @@ -1155,6 +1155,8 @@ check_http (void) | |||
| 1155 | xasprintf (&msg, | 1155 | xasprintf (&msg, |
| 1156 | _("Invalid HTTP response received from host on port %d: %s\n"), | 1156 | _("Invalid HTTP response received from host on port %d: %s\n"), |
| 1157 | server_port, status_line); | 1157 | server_port, status_line); |
| 1158 | if (show_body) | ||
| 1159 | xasprintf (&msg, _("%s\n%s"), msg, page); | ||
| 1158 | die (STATE_CRITICAL, "HTTP CRITICAL - %s", msg); | 1160 | die (STATE_CRITICAL, "HTTP CRITICAL - %s", msg); |
| 1159 | } | 1161 | } |
| 1160 | 1162 | ||
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index 0fcf4c68..d37c57c8 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c | |||
| @@ -293,6 +293,7 @@ main (int argc, char **argv) | |||
| 293 | printf("%s", buffer); | 293 | printf("%s", buffer); |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | n = 0; | ||
| 296 | while (n < ncommands) { | 297 | while (n < ncommands) { |
| 297 | xasprintf (&cmd_str, "%s%s", commands[n], "\r\n"); | 298 | xasprintf (&cmd_str, "%s%s", commands[n], "\r\n"); |
| 298 | my_send(cmd_str, strlen(cmd_str)); | 299 | my_send(cmd_str, strlen(cmd_str)); |
diff --git a/plugins/t/NPTest.cache.travis b/plugins/t/NPTest.cache.travis index 6ee45053..9b9f8059 100644 --- a/plugins/t/NPTest.cache.travis +++ b/plugins/t/NPTest.cache.travis | |||
| @@ -50,5 +50,5 @@ | |||
| 50 | 'NP_SNMP_USER' => '', | 50 | 'NP_SNMP_USER' => '', |
| 51 | 'NP_SSH_CONFIGFILE' => '~/.ssh/config', | 51 | 'NP_SSH_CONFIGFILE' => '~/.ssh/config', |
| 52 | 'NP_SSH_HOST' => 'localhost', | 52 | 'NP_SSH_HOST' => 'localhost', |
| 53 | 'NP_SSH_IDENTITY' => '~/.ssh/id_dsa' | 53 | 'NP_SSH_IDENTITY' => '~/.ssh/id_rsa' |
| 54 | } | 54 | } |
diff --git a/plugins/tests/check_snmp.t b/plugins/tests/check_snmp.t index 73a68b20..85d6bf55 100755 --- a/plugins/tests/check_snmp.t +++ b/plugins/tests/check_snmp.t | |||
| @@ -7,6 +7,7 @@ use strict; | |||
| 7 | use Test::More; | 7 | use Test::More; |
| 8 | use NPTest; | 8 | use NPTest; |
| 9 | use FindBin qw($Bin); | 9 | use FindBin qw($Bin); |
| 10 | use POSIX qw/strftime/; | ||
| 10 | 11 | ||
| 11 | my $tests = 67; | 12 | my $tests = 67; |
| 12 | # Check that all dependent modules are available | 13 | # Check that all dependent modules are available |
| @@ -37,6 +38,7 @@ if ($@) { | |||
| 37 | 38 | ||
| 38 | my $port_snmp = 16100 + int(rand(100)); | 39 | my $port_snmp = 16100 + int(rand(100)); |
| 39 | 40 | ||
| 41 | my $faketime = -x '/usr/bin/faketime' ? 1 : 0; | ||
| 40 | 42 | ||
| 41 | # Start up server | 43 | # Start up server |
| 42 | my @pids; | 44 | my @pids; |
| @@ -118,77 +120,81 @@ like($res->output, '/'.quotemeta('SNMP OK - And now have fun with with this: \"C | |||
| 118 | "And now have fun with with this: \"C:\\\\\" | 120 | "And now have fun with with this: \"C:\\\\\" |
| 119 | because we\'re not done yet!"').'/m', "Attempt to confuse parser No.3"); | 121 | because we\'re not done yet!"').'/m', "Attempt to confuse parser No.3"); |
| 120 | 122 | ||
| 121 | system("rm -f ".$ENV{'MP_STATE_PATH'}."/check_snmp/*"); | 123 | system("rm -f ".$ENV{'MP_STATE_PATH'}."/*/check_snmp/*"); |
| 122 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -w 600" ); | ||
| 123 | is($res->return_code, 0, "Returns OK"); | ||
| 124 | is($res->output, "No previous data to calculate rate - assume okay"); | ||
| 125 | 124 | ||
| 126 | # Need to sleep, otherwise duration=0 | 125 | # run rate checks with faketime. rate checks depend on the exact amount of time spend between the |
| 127 | sleep 1; | 126 | # plugin runs which may fail on busy machines. |
| 127 | # using faketime removes this race condition and also saves all the sleeps in between. | ||
| 128 | SKIP: { | ||
| 129 | skip "No faketime binary found", 28 if !$faketime; | ||
| 128 | 130 | ||
| 129 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -w 600" ); | 131 | my $ts = time(); |
| 130 | is($res->return_code, 1, "WARNING - due to going above rate calculation" ); | 132 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -w 600" ); |
| 131 | is($res->output, "SNMP RATE WARNING - *666* | iso.3.6.1.4.1.8072.3.2.67.10=666;600 "); | 133 | is($res->return_code, 0, "Returns OK"); |
| 134 | is($res->output, "No previous data to calculate rate - assume okay"); | ||
| 132 | 135 | ||
| 133 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -w 600" ); | 136 | # test rate 1 second later |
| 134 | is($res->return_code, 3, "UNKNOWN - basically the divide by zero error" ); | 137 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts+1))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -w 600" ); |
| 135 | is($res->output, "Time duration between plugin calls is invalid"); | 138 | is($res->return_code, 1, "WARNING - due to going above rate calculation" ); |
| 139 | is($res->output, "SNMP RATE WARNING - *666* | iso.3.6.1.4.1.8072.3.2.67.10=666;600 "); | ||
| 136 | 140 | ||
| 141 | # test rate with same time | ||
| 142 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts+1))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -w 600" ); | ||
| 143 | is($res->return_code, 3, "UNKNOWN - basically the divide by zero error" ); | ||
| 144 | is($res->output, "Time duration between plugin calls is invalid"); | ||
| 137 | 145 | ||
| 138 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets" ); | ||
| 139 | is($res->return_code, 0, "OK for first call" ); | ||
| 140 | is($res->output, "No previous data to calculate rate - assume okay" ); | ||
| 141 | 146 | ||
| 142 | # Need to sleep, otherwise duration=0 | 147 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets" ); |
| 143 | sleep 1; | 148 | is($res->return_code, 0, "OK for first call" ); |
| 149 | is($res->output, "No previous data to calculate rate - assume okay" ); | ||
| 144 | 150 | ||
| 145 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets" ); | 151 | # test rate 1 second later |
| 146 | is($res->return_code, 0, "OK as no thresholds" ); | 152 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts+1))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets" ); |
| 147 | is($res->output, "SNMP RATE OK - inoctets 666 | inoctets=666 ", "Check label"); | 153 | is($res->return_code, 0, "OK as no thresholds" ); |
| 154 | is($res->output, "SNMP RATE OK - inoctets 666 | inoctets=666 ", "Check label"); | ||
| 148 | 155 | ||
| 149 | sleep 2; | 156 | # test rate 3 seconds later |
| 157 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts+3))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets" ); | ||
| 158 | is($res->return_code, 0, "OK as no thresholds" ); | ||
| 159 | is($res->output, "SNMP RATE OK - inoctets 333 | inoctets=333 ", "Check rate decreases due to longer interval"); | ||
| 150 | 160 | ||
| 151 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets" ); | ||
| 152 | is($res->return_code, 0, "OK as no thresholds" ); | ||
| 153 | is($res->output, "SNMP RATE OK - inoctets 333 | inoctets=333 ", "Check rate decreases due to longer interval"); | ||
| 154 | 161 | ||
| 162 | # label performance data check | ||
| 163 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l test" ); | ||
| 164 | is($res->return_code, 0, "OK as no thresholds" ); | ||
| 165 | is($res->output, "SNMP OK - test 67996 | test=67996c ", "Check label"); | ||
| 155 | 166 | ||
| 156 | # label performance data check | 167 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l \"test'test\"" ); |
| 157 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l test" ); | 168 | is($res->return_code, 0, "OK as no thresholds" ); |
| 158 | is($res->return_code, 0, "OK as no thresholds" ); | 169 | is($res->output, "SNMP OK - test'test 68662 | \"test'test\"=68662c ", "Check label"); |
| 159 | is($res->output, "SNMP OK - test 67996 | test=67996c ", "Check label"); | ||
| 160 | 170 | ||
| 161 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l \"test'test\"" ); | 171 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l 'test\"test'" ); |
| 162 | is($res->return_code, 0, "OK as no thresholds" ); | 172 | is($res->return_code, 0, "OK as no thresholds" ); |
| 163 | is($res->output, "SNMP OK - test'test 68662 | \"test'test\"=68662c ", "Check label"); | 173 | is($res->output, "SNMP OK - test\"test 69328 | 'test\"test'=69328c ", "Check label"); |
| 164 | 174 | ||
| 165 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l 'test\"test'" ); | 175 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l test -O" ); |
| 166 | is($res->return_code, 0, "OK as no thresholds" ); | 176 | is($res->return_code, 0, "OK as no thresholds" ); |
| 167 | is($res->output, "SNMP OK - test\"test 69328 | 'test\"test'=69328c ", "Check label"); | 177 | is($res->output, "SNMP OK - test 69994 | iso.3.6.1.4.1.8072.3.2.67.10=69994c ", "Check label"); |
| 168 | 178 | ||
| 169 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l test -O" ); | 179 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10" ); |
| 170 | is($res->return_code, 0, "OK as no thresholds" ); | 180 | is($res->return_code, 0, "OK as no thresholds" ); |
| 171 | is($res->output, "SNMP OK - test 69994 | iso.3.6.1.4.1.8072.3.2.67.10=69994c ", "Check label"); | 181 | is($res->output, "SNMP OK - 70660 | iso.3.6.1.4.1.8072.3.2.67.10=70660c ", "Check label"); |
| 172 | 182 | ||
| 173 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10" ); | 183 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l 'test test'" ); |
| 174 | is($res->return_code, 0, "OK as no thresholds" ); | 184 | is($res->return_code, 0, "OK as no thresholds" ); |
| 175 | is($res->output, "SNMP OK - 70660 | iso.3.6.1.4.1.8072.3.2.67.10=70660c ", "Check label"); | 185 | is($res->output, "SNMP OK - test test 71326 | 'test test'=71326c ", "Check label"); |
| 176 | 186 | ||
| 177 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 -l 'test test'" ); | ||
| 178 | is($res->return_code, 0, "OK as no thresholds" ); | ||
| 179 | is($res->output, "SNMP OK - test test 71326 | 'test test'=71326c ", "Check label"); | ||
| 180 | 187 | ||
| 188 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets_per_minute --rate-multiplier=60" ); | ||
| 189 | is($res->return_code, 0, "OK for first call" ); | ||
| 190 | is($res->output, "No previous data to calculate rate - assume okay" ); | ||
| 181 | 191 | ||
| 182 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets_per_minute --rate-multiplier=60" ); | 192 | # test 1 second later |
| 183 | is($res->return_code, 0, "OK for first call" ); | 193 | $res = NPTest->testCmd("LC_TIME=C TZ=UTC faketime -f '".strftime("%Y-%m-%d %H:%M:%S", localtime($ts+1))."' ./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets_per_minute --rate-multiplier=60" ); |
| 184 | is($res->output, "No previous data to calculate rate - assume okay" ); | 194 | is($res->return_code, 0, "OK as no thresholds" ); |
| 185 | 195 | is($res->output, "SNMP RATE OK - inoctets_per_minute 39960 | inoctets_per_minute=39960 ", "Checking multiplier"); | |
| 186 | # Need to sleep, otherwise duration=0 | 196 | }; |
| 187 | sleep 1; | ||
| 188 | 197 | ||
| 189 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.10 --rate -l inoctets_per_minute --rate-multiplier=60" ); | ||
| 190 | is($res->return_code, 0, "OK as no thresholds" ); | ||
| 191 | is($res->output, "SNMP RATE OK - inoctets_per_minute 39960 | inoctets_per_minute=39960 ", "Checking multiplier"); | ||
| 192 | 198 | ||
| 193 | 199 | ||
| 194 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.11 -s '\"stringtests\"'" ); | 200 | $res = NPTest->testCmd( "./check_snmp -H 127.0.0.1 -C public -p $port_snmp -o .1.3.6.1.4.1.8072.3.2.67.11 -s '\"stringtests\"'" ); |
