summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_by_ssh.c203
-rw-r--r--plugins/check_disk.c226
-rw-r--r--plugins/check_nt.c6
-rw-r--r--plugins/netutils.c6
-rw-r--r--plugins/netutils.h4
-rw-r--r--plugins/popen.h2
-rw-r--r--plugins/utils.h16
7 files changed, 240 insertions, 223 deletions
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c
index 1211daa..8527b72 100644
--- a/plugins/check_by_ssh.c
+++ b/plugins/check_by_ssh.c
@@ -1,25 +1,19 @@
1/****************************************************************************** 1/******************************************************************************
2 * 2
3 * This file is part of the Nagios Plugins. 3 The Nagios Plugins are free software; you can redistribute them
4 * 4 and/or modify them under the terms of the GNU General Public
5 * Copyright (c) 1999, 2000, 2001 Karl DeBisschop <karl@debisschop.net> 5 License as published by the Free Software Foundation; either
6 * 6 version 2 of the License, or (at your option) any later version.
7 * The Nagios Plugins are free software; you can redistribute them 7
8 * and/or modify them under the terms of the GNU General Public 8 This program is distributed in the hope that it will be useful, but
9 * License as published by the Free Software Foundation; either 9 WITHOUT ANY WARRANTY; without even the implied warranty of
10 * version 2 of the License, or (at your option) any later version. 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * 11 General Public License for more details.
12 * This program is distributed in the hope that it will be useful, but 12
13 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 You should have received a copy of the GNU General Public License
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 along with this program; if not, write to the Free Software
15 * General Public License for more details. 15 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16 * 16
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 *
21 * $Id$
22 *
23 *****************************************************************************/ 17 *****************************************************************************/
24 18
25const char *progname = "check_by_ssh"; 19const char *progname = "check_by_ssh";
@@ -27,7 +21,6 @@ const char *revision = "$Revision$";
27const char *copyright = "2000-2003"; 21const char *copyright = "2000-2003";
28const char *email = "nagiosplug-devel@lists.sourceforge.net"; 22const char *email = "nagiosplug-devel@lists.sourceforge.net";
29 23
30#include "config.h"
31#include "common.h" 24#include "common.h"
32#include "netutils.h" 25#include "netutils.h"
33#include "utils.h" 26#include "utils.h"
@@ -38,83 +31,10 @@ int validate_arguments (void);
38void print_help (void); 31void print_help (void);
39void print_usage (void); 32void print_usage (void);
40 33
41void
42print_help (void)
43{
44 print_revision (progname, revision);
45
46 printf (_(COPYRIGHT), copyright, email);
47
48 printf (_("This plugin uses SSH to execute commands on a remote host\n\n"));
49
50 print_usage ();
51
52 printf (_(UT_HELP_VRSN));
53
54 printf (_(UT_HOST_PORT), 'p', "none");
55
56 printf (_(UT_IPv46));
57
58 printf (_("\
59 -1, --proto1\n\
60 tell ssh to use Protocol 1\n\
61 -2, --proto2\n\
62 tell ssh to use Protocol 2\n\
63 -f\n\
64 tells ssh to fork rather than create a tty\n"));
65
66 printf (_("\
67 -C, --command='COMMAND STRING'\n\
68 command to execute on the remote machine\n\
69 -l, --logname=USERNAME\n\
70 SSH user name on remote host [optional]\n\
71 -i, --identity=KEYFILE\n\
72 identity of an authorized key [optional]\n\
73 -O, --output=FILE\n\
74 external command file for nagios [optional]\n\
75 -s, --services=LIST\n\
76 list of nagios service names, separated by ':' [optional]\n\
77 -n, --name=NAME\n\
78 short name of host in nagios configuration [optional]\n"));
79
80 printf (_(UT_WARN_CRIT));
81
82 printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
83
84 printf (_("\n\
85The most common mode of use is to refer to a local identity file with\n\
86the '-i' option. In this mode, the identity pair should have a null\n\
87passphrase and the public key should be listed in the authorized_keys\n\
88file of the remote host. Usually the key will be restricted to running\n\
89only one command on the remote server. If the remote SSH server tracks\n\
90invocation agruments, the one remote program may be an agent that can\n\
91execute additional commands as proxy\n"));
92
93 printf (_("\n\
94To use passive mode, provide multiple '-C' options, and provide\n\
95all of -O, -s, and -n options (servicelist order must match '-C'\n\
96options)\n"));
97}
98
99
100
101
102
103void
104print_usage (void)
105{
106 printf (_("Usage:\n\
107check_by_ssh [-f46] [-t timeout] [-i identity] [-l user] -H <host> -C <command>\n\
108 [-n name] [-s servicelist] [-O outputfile] [-p port]\n\
109check_by_ssh -V prints version info\n\
110check_by_ssh -h prints more detailed help\n"));
111}
112
113
114int commands = 0; 34int commands = 0;
115int services = 0; 35int services = 0;
116char *remotecmd = ""; 36char *remotecmd = NULL;
117char *comm = SSH_COMMAND; 37char *comm = NULL;
118char *hostname = NULL; 38char *hostname = NULL;
119char *outputfile = NULL; 39char *outputfile = NULL;
120char *host_shortname = NULL; 40char *host_shortname = NULL;
@@ -123,20 +43,26 @@ int passive = FALSE;
123int verbose = FALSE; 43int verbose = FALSE;
124 44
125 45
46
47
48
49
126int 50int
127main (int argc, char **argv) 51main (int argc, char **argv)
128{ 52{
129 53
130 char input_buffer[MAX_INPUT_BUFFER]; 54 char input_buffer[MAX_INPUT_BUFFER];
131 char *result_text = ""; 55 char *result_text;
132 char *status_text; 56 char *status_text;
133 char *output = ""; 57 char *output;
134 char *eol = NULL; 58 char *eol = NULL;
135 int cresult; 59 int cresult;
136 int result = STATE_UNKNOWN; 60 int result = STATE_UNKNOWN;
137 time_t local_time; 61 time_t local_time;
138 FILE *fp = NULL; 62 FILE *fp = NULL;
139 63
64 asprintf (&remotecmd, "%s", "");
65 asprintf (&comm, "%s", SSH_COMMAND);
140 66
141 /* process arguments */ 67 /* process arguments */
142 if (process_arguments (argc, argv) == ERROR) 68 if (process_arguments (argc, argv) == ERROR)
@@ -235,6 +161,7 @@ main (int argc, char **argv)
235 161
236 162
237 163
164
238/* process command-line arguments */ 165/* process command-line arguments */
239int 166int
240process_arguments (int argc, char **argv) 167process_arguments (int argc, char **argv)
@@ -392,3 +319,81 @@ validate_arguments (void)
392 319
393 return OK; 320 return OK;
394} 321}
322
323
324
325
326
327
328void
329print_help (void)
330{
331 print_revision (progname, revision);
332
333 printf (_("Copyright (c) 1999 Karl DeBisschop <kdebisschop@users.sourceforge.net>\n"));
334 printf (_(COPYRIGHT), copyright, email);
335
336 printf (_("This plugin uses SSH to execute commands on a remote host\n\n"));
337
338 print_usage ();
339
340 printf (_(UT_HELP_VRSN));
341
342 printf (_(UT_HOST_PORT), 'p', "none");
343
344 printf (_(UT_IPv46));
345
346 printf (_("\
347 -1, --proto1\n\
348 tell ssh to use Protocol 1\n\
349 -2, --proto2\n\
350 tell ssh to use Protocol 2\n\
351 -f\n\
352 tells ssh to fork rather than create a tty\n"));
353
354 printf (_("\
355 -C, --command='COMMAND STRING'\n\
356 command to execute on the remote machine\n\
357 -l, --logname=USERNAME\n\
358 SSH user name on remote host [optional]\n\
359 -i, --identity=KEYFILE\n\
360 identity of an authorized key [optional]\n\
361 -O, --output=FILE\n\
362 external command file for nagios [optional]\n\
363 -s, --services=LIST\n\
364 list of nagios service names, separated by ':' [optional]\n\
365 -n, --name=NAME\n\
366 short name of host in nagios configuration [optional]\n"));
367
368 printf (_(UT_WARN_CRIT));
369
370 printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
371
372 printf (_("\n\
373The most common mode of use is to refer to a local identity file with\n\
374the '-i' option. In this mode, the identity pair should have a null\n\
375passphrase and the public key should be listed in the authorized_keys\n\
376file of the remote host. Usually the key will be restricted to running\n\
377only one command on the remote server. If the remote SSH server tracks\n\
378invocation agruments, the one remote program may be an agent that can\n\
379execute additional commands as proxy\n"));
380
381 printf (_("\n\
382To use passive mode, provide multiple '-C' options, and provide\n\
383all of -O, -s, and -n options (servicelist order must match '-C'\n\
384options)\n"));
385}
386
387
388
389
390
391void
392print_usage (void)
393{
394 printf (_("\n\
395Usage: %s [-f46] [-t timeout] [-i identity] [-l user] -H <host> \n\
396 -C <command> [-n name] [-s servicelist] [-O outputfile] [-p port]\n"),
397 progname);
398 printf (_(UT_HLP_VRS), progname, progname);
399}
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index b0b0d2a..7feb5a5 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -35,80 +35,6 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
35# include <limits.h> 35# include <limits.h>
36#endif 36#endif
37 37
38void
39print_usage (void)
40{
41 printf (_("\
42Usage: %s -w limit -c limit [-p path | -x device] [-t timeout] [-m] [-e]\n\
43 [-v] [-q]\n\
44 %s (-h|--help)\n\
45 %s (-V|--version)\n"),
46 progname, progname, progname);
47}
48
49void
50print_help (void)
51{
52 print_revision (progname, revision);
53
54 printf (_(COPYRIGHT), copyright, email);
55
56 printf (_("\
57This plugin checks the amount of used disk space on a mounted file system\n\
58and generates an alert if free space is less than one of the threshold values."));
59
60 print_usage ();
61
62 printf (_(UT_HELP_VRSN));
63
64 printf (_("\
65 -w, --warning=INTEGER\n\
66 Exit with WARNING status if less than INTEGER kilobytes of disk are free\n\
67 -w, --warning=PERCENT%%\n\
68 Exit with WARNING status if less than PERCENT of disk space is free\n\
69 -c, --critical=INTEGER\n\
70 Exit with CRITICAL status if less than INTEGER kilobytes of disk are free\n\
71 -c, --critical=PERCENT%%\n\
72 Exit with CRITCAL status if less than PERCENT of disk space is free\n\
73 -C, --clear\n\
74 Clear thresholds\n"));
75
76 printf (_("\
77 -u, --units=STRING\n\
78 Choose bytes, kB, MB, GB, TB (default: MB)\n\
79 -k, --kilobytes\n\
80 Same as '--units kB'\n\
81 -m, --megabytes\n\
82 Same as '--units MB'\n"));
83
84 printf (_("\
85 -l, --local\n\
86 Only check local filesystems\n\
87 -p, --path=PATH, --partition=PARTITION\n\
88 Path or partition (may be repeated)\n\
89 -x, --exclude_device=PATH <STRING>\n\
90 Ignore device (only works if -p unspecified)\n\
91 -X, --exclude-type=TYPE <STRING>\n\
92 Ignore all filesystems of indicated type (may be repeated)\n\
93 -M, --mountpoint\n\
94 Display the mountpoint instead of the partition\n\
95 -e, --errors-only\n\
96 Display only devices/mountpoints with errors\n"));
97
98 printf (_(UT_WARN_CRIT));
99
100 printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
101
102 printf (_(UT_VERBOSE));
103
104 printf ("%s", _("Examples:\n\
105 check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n\
106 Checks /tmp and /var at 10%,5% and / at 100MB, 50MB\n"));
107
108 support ();
109}
110
111
112/* If nonzero, show inode information. */ 38/* If nonzero, show inode information. */
113/* static int inode_format; */ 39/* static int inode_format; */
114 40
@@ -135,8 +61,8 @@ struct name_list
135{ 61{
136 char *name; 62 char *name;
137 int found; 63 int found;
138 int w_df; 64 uintmax_t w_df;
139 int c_df; 65 uintmax_t c_df;
140 double w_dfp; 66 double w_dfp;
141 double c_dfp; 67 double c_dfp;
142 struct name_list *name_next; 68 struct name_list *name_next;
@@ -183,18 +109,21 @@ enum
183#endif 109#endif
184 110
185int process_arguments (int, char **); 111int process_arguments (int, char **);
186int validate_arguments (int, int, double, double, char *); 112void print_path (char *mypath);
187int check_disk (int usp, int free_disk); 113int validate_arguments (uintmax_t, uintmax_t, double, double, char *);
114int check_disk (int usp, uintmax_t free_disk);
188int walk_name_list (struct name_list *list, const char *name); 115int walk_name_list (struct name_list *list, const char *name);
116void print_help (void);
117void print_usage (void);
189 118
190int w_df = -1; 119uintmax_t w_df = 0;
191int c_df = -1; 120uintmax_t c_df = 0;
192double w_dfp = -1.0; 121double w_dfp = -1.0;
193double c_dfp = -1.0; 122double c_dfp = -1.0;
194char *path = ""; 123char *path = "";
195char *exclude_device = ""; 124char *exclude_device = "";
196char *units = "MB"; 125char *units = NULL;
197unsigned long mult = 1024 * 1024; 126uintmax_t mult = 1024 * 1024;
198int verbose = 0; 127int verbose = 0;
199int erronly = FALSE; 128int erronly = FALSE;
200int display_mntp = FALSE; 129int display_mntp = FALSE;
@@ -202,10 +131,12 @@ int display_mntp = FALSE;
202/* Linked list of mounted filesystems. */ 131/* Linked list of mounted filesystems. */
203static struct mount_entry *mount_list; 132static struct mount_entry *mount_list;
204 133
134
135
205int 136int
206main (int argc, char **argv) 137main (int argc, char **argv)
207{ 138{
208 int usp = -1; 139 double usp = -1.0;
209 int result = STATE_UNKNOWN; 140 int result = STATE_UNKNOWN;
210 int disk_result = STATE_UNKNOWN; 141 int disk_result = STATE_UNKNOWN;
211 char file_system[MAX_INPUT_BUFFER]; 142 char file_system[MAX_INPUT_BUFFER];
@@ -244,7 +175,7 @@ main (int argc, char **argv)
244 get_fs_usage (me->me_mountdir, me->me_devname, &fsp); 175 get_fs_usage (me->me_mountdir, me->me_devname, &fsp);
245 176
246 if (fsp.fsu_blocks && strcmp ("none", me->me_mountdir)) { 177 if (fsp.fsu_blocks && strcmp ("none", me->me_mountdir)) {
247 usp = (fsp.fsu_blocks - fsp.fsu_bavail) * 100 / fsp.fsu_blocks; 178 usp = (double)(fsp.fsu_blocks - fsp.fsu_bavail) * 100 / fsp.fsu_blocks;
248 disk_result = check_disk (usp, fsp.fsu_bavail); 179 disk_result = check_disk (usp, fsp.fsu_bavail);
249 result = max_state (disk_result, result); 180 result = max_state (disk_result, result);
250 if (disk_result==STATE_OK && erronly && !verbose) 181 if (disk_result==STATE_OK && erronly && !verbose)
@@ -364,7 +295,7 @@ process_arguments (int argc, char **argv)
364 } 295 }
365 else if (strpbrk (optarg, ",:") && 296 else if (strpbrk (optarg, ",:") &&
366 strstr (optarg, "%") && 297 strstr (optarg, "%") &&
367 sscanf (optarg, "%d%*[:,]%lf%%", &w_df, &w_dfp) == 2) { 298 sscanf (optarg, "%ul%*[:,]%lf%%", &w_df, &w_dfp) == 2) {
368 break; 299 break;
369 } 300 }
370 else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &w_dfp) == 1) { 301 else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &w_dfp) == 1) {
@@ -380,7 +311,7 @@ process_arguments (int argc, char **argv)
380 } 311 }
381 else if (strpbrk (optarg, ",:") && 312 else if (strpbrk (optarg, ",:") &&
382 strstr (optarg, "%") && 313 strstr (optarg, "%") &&
383 sscanf (optarg, "%d%*[,:]%lf%%", &c_df, &c_dfp) == 2) { 314 sscanf (optarg, "%ul%*[,:]%lf%%", &c_df, &c_dfp) == 2) {
384 break; 315 break;
385 } 316 }
386 else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &c_dfp) == 1) { 317 else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &c_dfp) == 1) {
@@ -391,19 +322,19 @@ process_arguments (int argc, char **argv)
391 } 322 }
392 case 'u': 323 case 'u':
393 if (! strcmp (optarg, "bytes")) { 324 if (! strcmp (optarg, "bytes")) {
394 mult = 1; 325 mult = (uintmax_t)1;
395 units = "B"; 326 units = "B";
396 } else if (! strcmp (optarg, "kB")) { 327 } else if (! strcmp (optarg, "kB")) {
397 mult = 1024; 328 mult = (uintmax_t)1024;
398 units = "kB"; 329 units = "kB";
399 } else if (! strcmp (optarg, "MB")) { 330 } else if (! strcmp (optarg, "MB")) {
400 mult = 1024 * 1024; 331 mult = (uintmax_t)1024 * 1024;
401 units = "MB"; 332 units = "MB";
402 } else if (! strcmp (optarg, "GB")) { 333 } else if (! strcmp (optarg, "GB")) {
403 mult = 1024 * 1024 * 1024; 334 mult = (uintmax_t)1024 * 1024 * 1024;
404 units = "GB"; 335 units = "GB";
405 } else if (! strcmp (optarg, "TB")) { 336 } else if (! strcmp (optarg, "TB")) {
406 mult = (unsigned long)1024 * 1024 * 1024 * 1024; 337 mult = (uintmax_t)1024 * 1024 * 1024 * 1024;
407 units = "TB"; 338 units = "TB";
408 } else { 339 } else {
409 die (STATE_UNKNOWN, _("unit type %s not known\n"), optarg); 340 die (STATE_UNKNOWN, _("unit type %s not known\n"), optarg);
@@ -458,8 +389,8 @@ process_arguments (int argc, char **argv)
458 display_mntp = TRUE; 389 display_mntp = TRUE;
459 break; 390 break;
460 case 'C': 391 case 'C':
461 w_df = -1; 392 w_df = 0;
462 c_df = -1; 393 c_df = 0;
463 w_dfp = -1.0; 394 w_dfp = -1.0;
464 c_dfp = -1.0; 395 c_dfp = -1.0;
465 break; 396 break;
@@ -477,10 +408,10 @@ process_arguments (int argc, char **argv)
477 408
478 /* Support for "check_disk warn crit [fs]" with thresholds at used level */ 409 /* Support for "check_disk warn crit [fs]" with thresholds at used level */
479 c = optind; 410 c = optind;
480 if (w_dfp == -1 && argc > c && is_intnonneg (argv[c])) 411 if (w_dfp < 0 && argc > c && is_intnonneg (argv[c]))
481 w_dfp = (100.0 - atof (argv[c++])); 412 w_dfp = (100.0 - atof (argv[c++]));
482 413
483 if (c_dfp == -1 && argc > c && is_intnonneg (argv[c])) 414 if (c_dfp < 0 && argc > c && is_intnonneg (argv[c]))
484 c_dfp = (100.0 - atof (argv[c++])); 415 c_dfp = (100.0 - atof (argv[c++]));
485 416
486 if (argc > c && strlen (path) == 0) { 417 if (argc > c && strlen (path) == 0) {
@@ -520,9 +451,9 @@ void print_path (char *mypath)
520} 451}
521 452
522int 453int
523validate_arguments (int w, int c, double wp, double cp, char *mypath) 454validate_arguments (uintmax_t w, uintmax_t c, double wp, double cp, char *mypath)
524{ 455{
525 if (w < 0 && c < 0 && wp < 0.0 && cp < 0.0) { 456 if (w == 0 && c == 0 && wp < 0.0 && cp < 0.0) {
526 printf (_("INPUT ERROR: No thresholds specified")); 457 printf (_("INPUT ERROR: No thresholds specified"));
527 print_path (mypath); 458 print_path (mypath);
528 return ERROR; 459 return ERROR;
@@ -535,10 +466,10 @@ INPUT ERROR: C_DFP (%f) should be less than W_DFP (%.1f) and both should be betw
535 print_path (path); 466 print_path (path);
536 return ERROR; 467 return ERROR;
537 } 468 }
538 else if ((w > 0 || c > 0) && (w < 0 || c < 0 || c > w)) { 469 else if ((w > 0 || c > 0) && (w == 0 || c == 0 || c > w)) {
539 printf (_("\ 470 printf (_("\
540INPUT ERROR: C_DF (%d) should be less than W_DF (%d) and both should be greater than zero"), 471INPUT ERROR: C_DF (%lu) should be less than W_DF (%lu) and both should be greater than zero"),
541 c, w); 472 (unsigned long)c, (unsigned long)w);
542 print_path (path); 473 print_path (path);
543 return ERROR; 474 return ERROR;
544 } 475 }
@@ -551,17 +482,17 @@ INPUT ERROR: C_DF (%d) should be less than W_DF (%d) and both should be greater
551 482
552 483
553int 484int
554check_disk (int usp, int free_disk) 485check_disk (int usp, uintmax_t free_disk)
555{ 486{
556 int result = STATE_UNKNOWN; 487 int result = STATE_UNKNOWN;
557 /* check the percent used space against thresholds */ 488 /* check the percent used space against thresholds */
558 if (usp >= 0 && usp >= (100.0 - c_dfp)) 489 if (usp >= 0.0 && usp >= (100.0 - c_dfp))
559 result = STATE_CRITICAL; 490 result = STATE_CRITICAL;
560 else if (c_df >= 0 && free_disk <= c_df) 491 else if (c_df > 0 && free_disk <= c_df)
561 result = STATE_CRITICAL; 492 result = STATE_CRITICAL;
562 else if (usp >= 0 && usp >= (100.0 - w_dfp)) 493 else if (usp >= 0.0 && usp >= (100.0 - w_dfp))
563 result = STATE_WARNING; 494 result = STATE_WARNING;
564 else if (w_df >= 0 && free_disk <= w_df) 495 else if (w_df > 0 && free_disk <= w_df)
565 result = STATE_WARNING; 496 result = STATE_WARNING;
566 else if (usp >= 0.0) 497 else if (usp >= 0.0)
567 result = STATE_OK; 498 result = STATE_OK;
@@ -579,11 +510,92 @@ walk_name_list (struct name_list *list, const char *name)
579 /* if required for name_lists that have not saved w_df, etc (eg exclude lists) */ 510 /* if required for name_lists that have not saved w_df, etc (eg exclude lists) */
580 if (list->w_df) w_df = list->w_df; 511 if (list->w_df) w_df = list->w_df;
581 if (list->c_df) c_df = list->c_df; 512 if (list->c_df) c_df = list->c_df;
582 if (list->w_dfp) w_dfp = list->w_dfp; 513 if (list->w_dfp>=0.0) w_dfp = list->w_dfp;
583 if (list->c_dfp) c_dfp = list->c_dfp; 514 if (list->c_dfp>=0.0) c_dfp = list->c_dfp;
584 return TRUE; 515 return TRUE;
585 } 516 }
586 list = list->name_next; 517 list = list->name_next;
587 } 518 }
588 return FALSE; 519 return FALSE;
589} 520}
521
522
523
524
525
526
527void
528print_help (void)
529{
530 print_revision (progname, revision);
531
532 printf (_(COPYRIGHT), copyright, email);
533
534 printf (_("\
535This plugin checks the amount of used disk space on a mounted file system\n\
536and generates an alert if free space is less than one of the threshold values."));
537
538 print_usage ();
539
540 printf (_(UT_HELP_VRSN));
541
542 printf (_("\
543 -w, --warning=INTEGER\n\
544 Exit with WARNING status if less than INTEGER kilobytes of disk are free\n\
545 -w, --warning=PERCENT%%\n\
546 Exit with WARNING status if less than PERCENT of disk space is free\n\
547 -c, --critical=INTEGER\n\
548 Exit with CRITICAL status if less than INTEGER kilobytes of disk are free\n\
549 -c, --critical=PERCENT%%\n\
550 Exit with CRITCAL status if less than PERCENT of disk space is free\n\
551 -C, --clear\n\
552 Clear thresholds\n"));
553
554 printf (_("\
555 -u, --units=STRING\n\
556 Choose bytes, kB, MB, GB, TB (default: MB)\n\
557 -k, --kilobytes\n\
558 Same as '--units kB'\n\
559 -m, --megabytes\n\
560 Same as '--units MB'\n"));
561
562 printf (_("\
563 -l, --local\n\
564 Only check local filesystems\n\
565 -p, --path=PATH, --partition=PARTITION\n\
566 Path or partition (may be repeated)\n\
567 -x, --exclude_device=PATH <STRING>\n\
568 Ignore device (only works if -p unspecified)\n\
569 -X, --exclude-type=TYPE <STRING>\n\
570 Ignore all filesystems of indicated type (may be repeated)\n\
571 -M, --mountpoint\n\
572 Display the mountpoint instead of the partition\n\
573 -e, --errors-only\n\
574 Display only devices/mountpoints with errors\n"));
575
576 printf (_(UT_WARN_CRIT));
577
578 printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
579
580 printf (_(UT_VERBOSE));
581
582 printf ("%s", _("Examples:\n\
583 check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n\
584 Checks /tmp and /var at 10%,5% and / at 100MB, 50MB\n"));
585
586 support ();
587}
588
589
590
591
592void
593print_usage (void)
594{
595 printf (_("\
596Usage: %s -w limit -c limit [-p path | -x device] [-t timeout] [-m] [-e]\n\
597 [-v] [-q]\n\
598 %s (-h|--help)\n\
599 %s (-V|--version)\n"),
600 progname, progname, progname);
601}
diff --git a/plugins/check_nt.c b/plugins/check_nt.c
index 91022ba..22e7757 100644
--- a/plugins/check_nt.c
+++ b/plugins/check_nt.c
@@ -65,7 +65,7 @@ const char *progname = "check_nt";
65 65
66int process_arguments(int, char **); 66int process_arguments(int, char **);
67void preparelist(char *string); 67void preparelist(char *string);
68int strtoularray(unsigned long *array, char *string, char *delim); 68int strtoularray(unsigned long *array, char *string, const char *delim);
69void print_help(void); 69void print_help(void);
70void print_usage(void); 70void print_usage(void);
71 71
@@ -117,7 +117,7 @@ int main(int argc, char **argv){
117 else if(vars_to_check==CHECK_CPULOAD){ 117 else if(vars_to_check==CHECK_CPULOAD){
118 118
119 if (check_value_list==TRUE) { 119 if (check_value_list==TRUE) {
120 if (strtoularray(&lvalue_list,value_list,",")==TRUE) { 120 if (strtoularray(lvalue_list,value_list,",")==TRUE) {
121 /* -l parameters is present with only integers */ 121 /* -l parameters is present with only integers */
122 return_code=STATE_OK; 122 return_code=STATE_OK;
123 asprintf(&temp_string,_("CPU Load")); 123 asprintf(&temp_string,_("CPU Load"));
@@ -514,7 +514,7 @@ int process_arguments(int argc, char **argv){
514 514
515 515
516 516
517int strtoularray(unsigned long *array, char *string, char *delim) { 517int strtoularray(unsigned long *array, char *string, const char *delim) {
518 /* split a <delim> delimited string into a long array */ 518 /* split a <delim> delimited string into a long array */
519 int idx=0; 519 int idx=0;
520 char *t1; 520 char *t1;
diff --git a/plugins/netutils.c b/plugins/netutils.c
index 4ca3168..92fd142 100644
--- a/plugins/netutils.c
+++ b/plugins/netutils.c
@@ -32,7 +32,7 @@
32#include "common.h" 32#include "common.h"
33#include "netutils.h" 33#include "netutils.h"
34 34
35int socket_timeout = DEFAULT_SOCKET_TIMEOUT; 35unsigned int socket_timeout = DEFAULT_SOCKET_TIMEOUT;
36int econn_refuse_state = STATE_CRITICAL; 36int econn_refuse_state = STATE_CRITICAL;
37int was_refused = FALSE; 37int was_refused = FALSE;
38int address_family = AF_UNSPEC; 38int address_family = AF_UNSPEC;
@@ -131,7 +131,7 @@ process_tcp_request2 (char *server_address, int server_port,
131 else { /* it has */ 131 else { /* it has */
132 recv_result = 132 recv_result =
133 recv (sd, recv_buffer + recv_length, 133 recv (sd, recv_buffer + recv_length,
134 recv_size - recv_length - 1, 0); 134 (size_t)recv_size - recv_length - 1, 0);
135 if (recv_result == -1) { 135 if (recv_result == -1) {
136 /* recv failed, bail out */ 136 /* recv failed, bail out */
137 strcpy (recv_buffer + recv_length, ""); 137 strcpy (recv_buffer + recv_length, "");
@@ -201,7 +201,7 @@ process_request (char *server_address, int server_port, int proto,
201 } 201 }
202 202
203 else { 203 else {
204 recv_result = recv (sd, recv_buffer, recv_size - 1, 0); 204 recv_result = recv (sd, recv_buffer, (size_t)recv_size - 1, 0);
205 if (recv_result == -1) { 205 if (recv_result == -1) {
206 strcpy (recv_buffer, ""); 206 strcpy (recv_buffer, "");
207 if (proto != IPPROTO_TCP) 207 if (proto != IPPROTO_TCP)
diff --git a/plugins/netutils.h b/plugins/netutils.h
index 8f53497..f5df7af 100644
--- a/plugins/netutils.h
+++ b/plugins/netutils.h
@@ -34,7 +34,7 @@
34#include <netinet/in.h> 34#include <netinet/in.h>
35#include <arpa/inet.h> 35#include <arpa/inet.h>
36 36
37RETSIGTYPE socket_timeout_alarm_handler (int); 37RETSIGTYPE socket_timeout_alarm_handler (int) __attribute__((noreturn));
38 38
39int process_tcp_request2 (char *address, int port, char *sbuffer, 39int process_tcp_request2 (char *address, int port, char *sbuffer,
40 char *rbuffer, int rsize); 40 char *rbuffer, int rsize);
@@ -58,7 +58,7 @@ int is_inet6_addr (char *);
58#endif 58#endif
59int is_hostname (char *); 59int is_hostname (char *);
60 60
61extern int socket_timeout; 61extern unsigned int socket_timeout;
62extern int econn_refuse_state; 62extern int econn_refuse_state;
63extern int was_refused; 63extern int was_refused;
64extern int address_family; 64extern int address_family;
diff --git a/plugins/popen.h b/plugins/popen.h
index a1af4be..b758579 100644
--- a/plugins/popen.h
+++ b/plugins/popen.h
@@ -2,7 +2,7 @@ FILE *spopen (const char *);
2int spclose (FILE *); 2int spclose (FILE *);
3RETSIGTYPE popen_timeout_alarm_handler (int); 3RETSIGTYPE popen_timeout_alarm_handler (int);
4 4
5extern int timeout_interval; 5extern unsigned int timeout_interval;
6pid_t *childpid; 6pid_t *childpid;
7int *child_stderr_array; 7int *child_stderr_array;
8FILE *child_process; 8FILE *child_process;
diff --git a/plugins/utils.h b/plugins/utils.h
index f36834f..9dc2654 100644
--- a/plugins/utils.h
+++ b/plugins/utils.h
@@ -16,16 +16,16 @@ suite of plugins. */
16void support (void); 16void support (void);
17char *clean_revstring (const char *revstring); 17char *clean_revstring (const char *revstring);
18void print_revision (const char *, const char *); 18void print_revision (const char *, const char *);
19void die (int result, const char *fmt, ...); 19void die (int result, const char *fmt, ...) __attribute__((noreturn));
20 20
21/* Handle timeouts */ 21/* Handle timeouts */
22 22
23#ifdef LOCAL_TIMEOUT_ALARM_HANDLER 23#ifdef LOCAL_TIMEOUT_ALARM_HANDLER
24extern int timeout_interval; 24extern unsigned int timeout_interval;
25RETSIGTYPE timeout_alarm_handler (int); 25RETSIGTYPE timeout_alarm_handler (int) __attribute__((noreturn));
26#else 26#else
27int timeout_interval = DEFAULT_SOCKET_TIMEOUT; 27unsigned int timeout_interval = DEFAULT_SOCKET_TIMEOUT;
28extern RETSIGTYPE timeout_alarm_handler (int); 28extern RETSIGTYPE timeout_alarm_handler (int) __attribute__((noreturn));
29#endif 29#endif
30 30
31time_t start_time, end_time; 31time_t start_time, end_time;
@@ -72,9 +72,9 @@ char *strpcat (char *dest, const char *src, const char *str);
72 72
73int max_state (int a, int b); 73int max_state (int a, int b);
74 74
75void usage (char *msg); 75void usage (char *msg) __attribute__((noreturn));
76void usage2(char *msg, char *arg); 76void usage2(char *msg, char *arg) __attribute__((noreturn));
77void usage3(char *msg, char arg); 77void usage3(char *msg, char arg) __attribute__((noreturn));
78 78
79char *state_text (int result); 79char *state_text (int result);
80 80