diff options
-rw-r--r-- | plugins/check_by_ssh.c | 11 | ||||
-rw-r--r-- | plugins/t/check_by_ssh.t | 13 |
2 files changed, 21 insertions, 3 deletions
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c index ff27b396..87520166 100644 --- a/plugins/check_by_ssh.c +++ b/plugins/check_by_ssh.c | |||
@@ -187,6 +187,7 @@ process_arguments (int argc, char **argv) | |||
187 | {"use-ipv6", no_argument, 0, '6'}, | 187 | {"use-ipv6", no_argument, 0, '6'}, |
188 | {"ssh-option", required_argument, 0, 'o'}, | 188 | {"ssh-option", required_argument, 0, 'o'}, |
189 | {"quiet", no_argument, 0, 'q'}, | 189 | {"quiet", no_argument, 0, 'q'}, |
190 | {"configfile", optional_argument, 0, 'F'}, | ||
190 | {0, 0, 0, 0} | 191 | {0, 0, 0, 0} |
191 | }; | 192 | }; |
192 | 193 | ||
@@ -198,7 +199,7 @@ process_arguments (int argc, char **argv) | |||
198 | strcpy (argv[c], "-t"); | 199 | strcpy (argv[c], "-t"); |
199 | 200 | ||
200 | while (1) { | 201 | while (1) { |
201 | c = getopt_long (argc, argv, "Vvh1246fqt:H:O:p:i:u:l:C:S::E::n:s:o:", longopts, | 202 | c = getopt_long (argc, argv, "Vvh1246fqt:H:O:p:i:u:l:C:S::E::n:s:o:F:", longopts, |
202 | &option); | 203 | &option); |
203 | 204 | ||
204 | if (c == -1 || c == EOF) | 205 | if (c == -1 || c == EOF) |
@@ -306,6 +307,10 @@ process_arguments (int argc, char **argv) | |||
306 | case 'q': /* Tell the ssh command to be quiet */ | 307 | case 'q': /* Tell the ssh command to be quiet */ |
307 | comm_append("-q"); | 308 | comm_append("-q"); |
308 | break; | 309 | break; |
310 | case 'F': /* ssh configfile */ | ||
311 | comm_append("-F"); | ||
312 | comm_append(optarg); | ||
313 | break; | ||
309 | default: /* help */ | 314 | default: /* help */ |
310 | usage5(); | 315 | usage5(); |
311 | } | 316 | } |
@@ -418,6 +423,8 @@ print_help (void) | |||
418 | printf (" %s\n", _("short name of host in nagios configuration [optional]")); | 423 | printf (" %s\n", _("short name of host in nagios configuration [optional]")); |
419 | printf (" %s\n","-o, --ssh-option=OPTION"); | 424 | printf (" %s\n","-o, --ssh-option=OPTION"); |
420 | printf (" %s\n", _("Call ssh with '-o OPTION' (may be used multiple times) [optional]")); | 425 | printf (" %s\n", _("Call ssh with '-o OPTION' (may be used multiple times) [optional]")); |
426 | printf (" %s\n","-F, --configfile"); | ||
427 | printf (" %s\n", _("Tell ssh to use this configfile [optional]")); | ||
421 | printf (" %s\n","-q, --quiet"); | 428 | printf (" %s\n","-q, --quiet"); |
422 | printf (" %s\n", _("Tell ssh to suppress warning and diagnostic messages [optional]")); | 429 | printf (" %s\n", _("Tell ssh to suppress warning and diagnostic messages [optional]")); |
423 | printf (UT_WARN_CRIT); | 430 | printf (UT_WARN_CRIT); |
@@ -454,6 +461,6 @@ print_usage (void) | |||
454 | printf (" %s -H <host> -C <command> [-fqv] [-1|-2] [-4|-6]\n" | 461 | printf (" %s -H <host> -C <command> [-fqv] [-1|-2] [-4|-6]\n" |
455 | " [-S [lines]] [-E [lines]] [-t timeout] [-i identity]\n" | 462 | " [-S [lines]] [-E [lines]] [-t timeout] [-i identity]\n" |
456 | " [-l user] [-n name] [-s servicelist] [-O outputfile]\n" | 463 | " [-l user] [-n name] [-s servicelist] [-O outputfile]\n" |
457 | " [-p port] [-o ssh-option]\n", | 464 | " [-p port] [-o ssh-option] [-F configfile]\n", |
458 | progname); | 465 | progname); |
459 | } | 466 | } |
diff --git a/plugins/t/check_by_ssh.t b/plugins/t/check_by_ssh.t index 5f2c534d..cca72c96 100644 --- a/plugins/t/check_by_ssh.t +++ b/plugins/t/check_by_ssh.t | |||
@@ -17,9 +17,14 @@ my $ssh_key = getTestParameter( "NP_SSH_IDENTITY", | |||
17 | "A key allowing access to NP_SSH_HOST", | 17 | "A key allowing access to NP_SSH_HOST", |
18 | "~/.ssh/id_dsa"); | 18 | "~/.ssh/id_dsa"); |
19 | 19 | ||
20 | my $ssh_conf = getTestParameter( "NP_SSH_CONFIGFILE", | ||
21 | "A config file with ssh settings", | ||
22 | "~/.ssh/config"); | ||
23 | |||
24 | |||
20 | plan skip_all => "SSH_HOST and SSH_IDENTITY must be defined" unless ($ssh_service && $ssh_key); | 25 | plan skip_all => "SSH_HOST and SSH_IDENTITY must be defined" unless ($ssh_service && $ssh_key); |
21 | 26 | ||
22 | plan tests => 40; | 27 | plan tests => 42; |
23 | 28 | ||
24 | # Some random check strings/response | 29 | # Some random check strings/response |
25 | my @responce = ('OK: Everything is fine!', | 30 | my @responce = ('OK: Everything is fine!', |
@@ -85,6 +90,12 @@ $result = NPTest->testCmd( | |||
85 | cmp_ok($result->return_code, '==', 8, "Exit with return code 8 (out of bounds)"); | 90 | cmp_ok($result->return_code, '==', 8, "Exit with return code 8 (out of bounds)"); |
86 | is($result->output, $responce[4], "Return proper status text even with unknown status codes"); | 91 | is($result->output, $responce[4], "Return proper status text even with unknown status codes"); |
87 | 92 | ||
93 | $result = NPTest->testCmd( | ||
94 | "./check_by_ssh -i $ssh_key -H $ssh_service -F $ssh_conf -C 'exit 0'" | ||
95 | ); | ||
96 | cmp_ok($result->return_code, '==', 0, "Exit with return code 0 (OK)"); | ||
97 | is($result->output, 'OK - check_by_ssh: Remote command \'exit 0\' returned status 0', "Status text if command returned none (OK)"); | ||
98 | |||
88 | # Multiple active checks | 99 | # Multiple active checks |
89 | $result = NPTest->testCmd( | 100 | $result = NPTest->testCmd( |
90 | "./check_by_ssh -i $ssh_key -H $ssh_service -C '$check[1]; sh -c exit\\ 1' -C '$check[0]; sh -c exit\\ 0' -C '$check[3]; sh -c exit\\ 3' -C '$check[2]; sh -c exit\\ 2'" | 101 | "./check_by_ssh -i $ssh_key -H $ssh_service -C '$check[1]; sh -c exit\\ 1' -C '$check[0]; sh -c exit\\ 0' -C '$check[3]; sh -c exit\\ 3' -C '$check[2]; sh -c exit\\ 2'" |