diff options
Diffstat (limited to 'web/attachments/37563-nagiosplug-check_ssh-20021213.diff')
-rw-r--r-- | web/attachments/37563-nagiosplug-check_ssh-20021213.diff | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/web/attachments/37563-nagiosplug-check_ssh-20021213.diff b/web/attachments/37563-nagiosplug-check_ssh-20021213.diff new file mode 100644 index 0000000..091b5bf --- /dev/null +++ b/web/attachments/37563-nagiosplug-check_ssh-20021213.diff | |||
@@ -0,0 +1,126 @@ | |||
1 | Index: plugins/check_ssh.c | ||
2 | =================================================================== | ||
3 | RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_ssh.c,v | ||
4 | retrieving revision 1.3 | ||
5 | diff -u -r1.3 check_ssh.c | ||
6 | --- plugins/check_ssh.c 30 Oct 2002 18:44:43 -0000 1.3 | ||
7 | +++ plugins/check_ssh.c 14 Dec 2002 04:31:32 -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 | @@ -109,6 +108,8 @@ | ||
26 | socket_timeout = atoi (optarg); | ||
27 | break; | ||
28 | case 'H': /* host */ | ||
29 | + if (is_host (optarg) == FALSE) | ||
30 | + usage ("Invalid host name/addresss\n"); | ||
31 | server_name = optarg; | ||
32 | break; | ||
33 | case 'p': /* port */ | ||
34 | @@ -125,7 +126,8 @@ | ||
35 | |||
36 | c = optind; | ||
37 | if (server_name == NULL && argv[c]) { | ||
38 | - server_name = argv[c++]; | ||
39 | + if (is_host (argv[c++])) | ||
40 | + server_name = argv[c++]; | ||
41 | } | ||
42 | else if (port == -1 && argv[c]) { | ||
43 | if (is_intpos (argv[c])) { | ||
44 | @@ -153,26 +155,6 @@ | ||
45 | |||
46 | /************************************************************************ | ||
47 | * | ||
48 | -* Resolve hostname into IP address | ||
49 | -* | ||
50 | -*-----------------------------------------------------------------------*/ | ||
51 | - | ||
52 | -char * | ||
53 | -ssh_resolve (char *hostname) | ||
54 | -{ | ||
55 | - struct hostent *host; | ||
56 | - | ||
57 | - host = gethostbyname (hostname); | ||
58 | - if (!host) { | ||
59 | - herror (hostname); | ||
60 | - exit (STATE_CRITICAL); | ||
61 | - } | ||
62 | - return (host->h_addr); | ||
63 | -} | ||
64 | - | ||
65 | - | ||
66 | -/************************************************************************ | ||
67 | -* | ||
68 | * Try to connect to SSH server at specified server and port | ||
69 | * | ||
70 | *-----------------------------------------------------------------------*/ | ||
71 | @@ -180,39 +162,24 @@ | ||
72 | int | ||
73 | ssh_connect (char *haddr, short hport) | ||
74 | { | ||
75 | - int s; | ||
76 | - struct sockaddr_in addr; | ||
77 | - int addrlen; | ||
78 | - int len; | ||
79 | + int result; | ||
80 | + int sock; | ||
81 | char *output = NULL; | ||
82 | char *buffer = NULL; | ||
83 | char *ssh_proto = NULL; | ||
84 | char *ssh_server = NULL; | ||
85 | char revision[20]; | ||
86 | |||
87 | - sscanf ("$Revision: 1.3 $", "$Revision: %[0123456789.]", revision); | ||
88 | + sscanf ("$Revision: 1.3 $", "$Revision: %[0-9.]", revision); | ||
89 | |||
90 | - addrlen = sizeof (addr); | ||
91 | - memset (&addr, 0, addrlen); | ||
92 | - addr.sin_port = htons (hport); | ||
93 | - addr.sin_family = AF_INET; | ||
94 | - bcopy (haddr, (void *) &addr.sin_addr.s_addr, 4); | ||
95 | - | ||
96 | - s = socket (AF_INET, SOCK_STREAM, 0); | ||
97 | - if (!s) { | ||
98 | - printf ("socket(): %s for %s:%d\n", strerror (errno), server_name, hport); | ||
99 | - exit (STATE_CRITICAL); | ||
100 | - } | ||
101 | + result = my_tcp_connect (haddr, hport, &sock); | ||
102 | |||
103 | - if (connect (s, (struct sockaddr *) &addr, addrlen)) { | ||
104 | - printf ("connect(): %s for %s:%d\n", strerror (errno), server_name, | ||
105 | - hport); | ||
106 | - exit (STATE_CRITICAL); | ||
107 | - } | ||
108 | + if (result != STATE_OK) | ||
109 | + return result; | ||
110 | |||
111 | output = (char *) malloc (BUFF_SZ + 1); | ||
112 | memset (output, 0, BUFF_SZ + 1); | ||
113 | - recv (s, output, BUFF_SZ, 0); | ||
114 | + recv (sock, output, BUFF_SZ, 0); | ||
115 | if (strncmp (output, "SSH", 3)) { | ||
116 | printf ("Server answer: %s", output); | ||
117 | exit (STATE_CRITICAL); | ||
118 | @@ -228,7 +195,7 @@ | ||
119 | ("SSH ok - %s (protocol %s)\n", | ||
120 | ssh_server, ssh_proto); | ||
121 | asprintf (&buffer, "SSH-%s-check_ssh_%s\r\n", ssh_proto, revision); | ||
122 | - send (s, buffer, strlen (buffer), MSG_DONTWAIT); | ||
123 | + send (sock, buffer, strlen (buffer), MSG_DONTWAIT); | ||
124 | if (verbose) | ||
125 | printf ("%s\n", buffer); | ||
126 | exit (STATE_OK); | ||