summaryrefslogtreecommitdiffstats
path: root/web/attachments/41928-check_ssh.diff
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/41928-check_ssh.diff')
-rw-r--r--web/attachments/41928-check_ssh.diff139
1 files changed, 139 insertions, 0 deletions
diff --git a/web/attachments/41928-check_ssh.diff b/web/attachments/41928-check_ssh.diff
new file mode 100644
index 0000000..fce5ad2
--- /dev/null
+++ b/web/attachments/41928-check_ssh.diff
@@ -0,0 +1,139 @@
1Index: plugins/check_ssh.c
2===================================================================
3RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_ssh.c,v
4retrieving revision 1.4
5diff -u -r1.4 check_ssh.c
6--- plugins/check_ssh.c 13 Jan 2003 12:15:16 -0000 1.4
7+++ plugins/check_ssh.c 9 Feb 2003 19:32:30 -0000
8@@ -34,7 +34,6 @@
9 void print_help (void);
10 void print_usage (void);
11
12-char *ssh_resolve (char *hostname);
13 int ssh_connect (char *haddr, short hport);
14
15 int
16@@ -49,7 +48,7 @@
17 alarm (socket_timeout);
18
19 /* ssh_connect exits if error is found */
20- ssh_connect (ssh_resolve (server_name), port);
21+ ssh_connect (server_name, port);
22
23 alarm (0);
24
25@@ -62,6 +61,7 @@
26 process_arguments (int argc, char **argv)
27 {
28 int c;
29+ char *tmp = NULL;
30
31 #ifdef HAVE_GETOPT_H
32 int option_index = 0;
33@@ -109,6 +109,8 @@
34 socket_timeout = atoi (optarg);
35 break;
36 case 'H': /* host */
37+ if (is_host (optarg) == FALSE)
38+ usage ("Invalid hostname/address\n");
39 server_name = optarg;
40 break;
41 case 'p': /* port */
42@@ -125,9 +127,12 @@
43
44 c = optind;
45 if (server_name == NULL && argv[c]) {
46- server_name = argv[c++];
47+ if (is_host (argv[c])) {
48+ server_name = argv[c++];
49+ }
50 }
51- else if (port == -1 && argv[c]) {
52+
53+ if (port == -1 && argv[c]) {
54 if (is_intpos (argv[c])) {
55 port = atoi (argv[c++]);
56 }
57@@ -153,26 +158,6 @@
58
59 /************************************************************************
60 *
61-* Resolve hostname into IP address
62-*
63-*-----------------------------------------------------------------------*/
64-
65-char *
66-ssh_resolve (char *hostname)
67-{
68- struct hostent *host;
69-
70- host = gethostbyname (hostname);
71- if (!host) {
72- herror (hostname);
73- exit (STATE_CRITICAL);
74- }
75- return (host->h_addr);
76-}
77-
78-
79-/************************************************************************
80-*
81 * Try to connect to SSH server at specified server and port
82 *
83 *-----------------------------------------------------------------------*/
84@@ -180,39 +165,24 @@
85 int
86 ssh_connect (char *haddr, short hport)
87 {
88- int s;
89- struct sockaddr_in addr;
90- int addrlen;
91- int len;
92+ int sock;
93+ int result;
94 char *output = NULL;
95 char *buffer = NULL;
96 char *ssh_proto = NULL;
97 char *ssh_server = NULL;
98 char revision[20];
99
100- sscanf ("$Revision: 1.4 $", "$Revision: %[0123456789.]", revision);
101+ sscanf ("$Revision: 1.4 $", "$Revision: %[0-9.]", revision);
102
103- addrlen = sizeof (addr);
104- memset (&addr, 0, addrlen);
105- addr.sin_port = htons (hport);
106- addr.sin_family = AF_INET;
107- bcopy (haddr, (void *) &addr.sin_addr.s_addr, 4);
108-
109- s = socket (AF_INET, SOCK_STREAM, 0);
110- if (!s) {
111- printf ("socket(): %s for %s:%d\n", strerror (errno), server_name, hport);
112- exit (STATE_CRITICAL);
113- }
114+ result = my_tcp_connect (haddr, hport, &sock);
115
116- if (connect (s, (struct sockaddr *) &addr, addrlen)) {
117- printf ("connect(): %s for %s:%d\n", strerror (errno), server_name,
118- hport);
119- exit (STATE_CRITICAL);
120- }
121+ if (result != STATE_OK)
122+ return result;
123
124 output = (char *) malloc (BUFF_SZ + 1);
125 memset (output, 0, BUFF_SZ + 1);
126- recv (s, output, BUFF_SZ, 0);
127+ recv (sock, output, BUFF_SZ, 0);
128 if (strncmp (output, "SSH", 3)) {
129 printf ("Server answer: %s", output);
130 exit (STATE_CRITICAL);
131@@ -228,7 +198,7 @@
132 ("SSH ok - %s (protocol %s)\n",
133 ssh_server, ssh_proto);
134 asprintf (&buffer, "SSH-%s-check_ssh_%s\r\n", ssh_proto, revision);
135- send (s, buffer, strlen (buffer), MSG_DONTWAIT);
136+ send (sock, buffer, strlen (buffer), MSG_DONTWAIT);
137 if (verbose)
138 printf ("%s\n", buffer);
139 exit (STATE_OK);