summaryrefslogtreecommitdiffstats
path: root/web/attachments/154515-nagios_plugins-check_ssh.c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/154515-nagios_plugins-check_ssh.c.patch')
-rw-r--r--web/attachments/154515-nagios_plugins-check_ssh.c.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/web/attachments/154515-nagios_plugins-check_ssh.c.patch b/web/attachments/154515-nagios_plugins-check_ssh.c.patch
new file mode 100644
index 0000000..da31ea2
--- /dev/null
+++ b/web/attachments/154515-nagios_plugins-check_ssh.c.patch
@@ -0,0 +1,98 @@
1--- ../../original_sources/nagios-plugins-1.4.2/plugins/check_ssh.c 2005-04-11 14:02:40.000000000 -0400
2+++ nagios-plugins-1.4.2/plugins/check_ssh.c 2005-10-31 09:04:34.000000000 -0500
3@@ -36,7 +36,8 @@
4
5 int port = -1;
6 char *server_name = NULL;
7-char *remote_version = NULL;
8+int remote_versions = 0;
9+char **remote_version;
10 int verbose = FALSE;
11
12 int process_arguments (int, char **);
13@@ -44,7 +45,7 @@
14 void print_help (void);
15 void print_usage (void);
16
17-int ssh_connect (char *haddr, int hport, char *remote_version);
18+int ssh_connect (char *haddr, int hport, char **remote_version);
19
20
21
22@@ -136,9 +137,13 @@
23 usage4 (_("IPv6 support not available"));
24 #endif
25 break;
26- case 'r': /* remote version */
27- remote_version = optarg;
28- break;
29+ case 'r': /* remote version multiple occurances allowed */
30+ if (verbose) printf("pre-parsing %s-%d\n",optarg, remote_versions);
31+ remote_version = realloc(remote_version, (++remote_versions) * sizeof(char *));
32+ if (verbose) printf("post-parsing %s\n",optarg);
33+
34+ remote_version[remote_versions - 1] = optarg;
35+ break;
36 case 'H': /* host */
37 if (is_host (optarg) == FALSE)
38 usage2 (_("Invalid hostname/address"), optarg);
39@@ -193,7 +198,7 @@
40
41
42 int
43-ssh_connect (char *haddr, int hport, char *remote_version)
44+ssh_connect (char *haddr, int hport, char **remote_version)
45 {
46 int sd;
47 int result;
48@@ -202,6 +207,7 @@
49 char *ssh_proto = NULL;
50 char *ssh_server = NULL;
51 char rev_no[20];
52+ int remote_versions_i;
53
54 sscanf ("$Revision: 1.27 $", "$Revision: %[0123456789.]", rev_no);
55
56@@ -230,11 +236,26 @@
57 if (verbose)
58 printf ("%s\n", buffer);
59
60- if (remote_version && strcmp(remote_version, ssh_server)) {
61- printf
62- (_("SSH WARNING - %s (protocol %s) version mismatch, expected '%s'\n"),
63- ssh_server, ssh_proto, remote_version);
64- exit (STATE_WARNING);
65+ if ( remote_versions ) {
66+ remote_versions_i = remote_versions;
67+ while ( remote_versions_i > 0) {
68+ if (verbose) printf("Comparing server '%s' to -r opt '%s'\n", ssh_server, remote_version[remote_versions_i -1]);
69+ if ( ! strcmp(remote_version[remote_versions_i - 1], ssh_server)) {
70+ break;
71+ } else {
72+ remote_versions_i--;
73+ }
74+ }
75+ if (remote_versions_i == 0) {
76+ printf
77+ (_("SSH WARNING - '%s' (protocol %s) version mismatch, expected "),
78+ ssh_server, ssh_proto);
79+ while (remote_versions > 0) {
80+ printf("'%s'%s", remote_version[remote_versions -1], remote_versions == 1?".\n":", ");
81+ remote_versions --;
82+ }
83+ exit (STATE_WARNING);
84+ }
85 }
86
87 printf
88@@ -272,7 +293,9 @@
89
90 printf (_("\
91 -r, --remote-version=STRING\n\
92- Warn if string doesn't match expected server version (ex: OpenSSH_3.9p1)\n"));
93+ Warn if string doesn't match expected server version (ex: OpenSSH_3.9p1).\n"));
94+ printf (_("\
95+ Can use multiple times to accept multiple version strings.\n"));
96
97 printf (_(UT_VERBOSE));
98