aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar Karl DeBisschop <kdebisschop@users.sourceforge.net> 2003-08-10 06:53:22 +0000
committerGravatar Karl DeBisschop <kdebisschop@users.sourceforge.net> 2003-08-10 06:53:22 +0000
commitf4f92be60c94fd4e0dd4b2b4b3101543eedb706a (patch)
tree28d25bd0ab624d82435823c940a186370947ad4d /plugins
parentcbf702f51f839af5a8e9c66bdae7d6a3dc363ace (diff)
downloadmonitoring-plugins-f4f92be60c94fd4e0dd4b2b4b3101543eedb706a.tar.gz
the last round of pedantic compiler warnings
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@676 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_by_ssh.c8
-rw-r--r--plugins/check_dig.c8
-rw-r--r--plugins/check_disk.c12
-rw-r--r--plugins/check_dns.c88
-rw-r--r--plugins/check_fping.c115
-rw-r--r--plugins/check_game.c97
-rw-r--r--plugins/check_hpjd.c253
-rw-r--r--plugins/check_http.c12
-rw-r--r--plugins/check_ldap.c152
-rw-r--r--plugins/check_load.c6
-rw-r--r--plugins/check_mrtg.c8
-rw-r--r--plugins/check_mrtgtraf.c4
-rw-r--r--plugins/check_mysql.c196
-rw-r--r--plugins/check_nagios.c106
-rw-r--r--plugins/check_nt.c13
-rw-r--r--plugins/check_nwstat.c6
-rw-r--r--plugins/check_overcr.c8
-rw-r--r--plugins/check_pgsql.c211
-rw-r--r--plugins/check_ping.c6
-rw-r--r--plugins/check_procs.c12
-rw-r--r--plugins/check_radius.c152
-rw-r--r--plugins/check_real.c14
-rw-r--r--plugins/check_smtp.c6
-rw-r--r--plugins/check_snmp.c73
-rw-r--r--plugins/check_ssh.c6
-rw-r--r--plugins/check_swap.c126
-rw-r--r--plugins/check_tcp.c6
-rw-r--r--plugins/check_time.c10
-rw-r--r--plugins/check_udp.c6
-rw-r--r--plugins/check_ups.c8
-rw-r--r--plugins/check_users.c6
-rw-r--r--plugins/negate.c188
-rw-r--r--plugins/popen.c3
-rw-r--r--plugins/urlize.c225
34 files changed, 1090 insertions, 1060 deletions
diff --git a/plugins/check_by_ssh.c b/plugins/check_by_ssh.c
index 59e8ea0c..b0aa1897 100644
--- a/plugins/check_by_ssh.c
+++ b/plugins/check_by_ssh.c
@@ -169,8 +169,8 @@ process_arguments (int argc, char **argv)
int c;
char *p1, *p2;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
{"verbose", no_argument, 0, 'v'},
@@ -200,8 +200,8 @@ process_arguments (int argc, char **argv)
strcpy (argv[c], "-t");
while (1) {
- c = getopt_long (argc, argv, "Vvh1246ft:H:O:p:i:u:l:C:n:s:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "Vvh1246ft:H:O:p:i:u:l:C:n:s:", longopts,
+ &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_dig.c b/plugins/check_dig.c
index ff160591..f376e309 100644
--- a/plugins/check_dig.c
+++ b/plugins/check_dig.c
@@ -160,8 +160,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"query_address", required_argument, 0, 'e'},
{"verbose", no_argument, 0, 'v'},
@@ -174,7 +174,7 @@ process_arguments (int argc, char **argv)
return ERROR;
while (1) {
- c = getopt_long (argc, argv, "hVvt:l:H:", long_options, &option_index);
+ c = getopt_long (argc, argv, "hVvt:l:H:", longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -300,7 +300,7 @@ print_help (void)
printf (_(UT_VERBOSE));
- support ();
+ printf (_(UT_SUPPORT));
}
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index 7974d141..c8cfecd2 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -237,8 +237,8 @@ process_arguments (int argc, char **argv)
unsigned long l;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"timeout", required_argument, 0, 't'},
{"warning", required_argument, 0, 'w'},
{"critical", required_argument, 0, 'c'},
@@ -274,7 +274,7 @@ process_arguments (int argc, char **argv)
strcpy (argv[c], "-t");
while (1) {
- c = getopt_long (argc, argv, "+?VqhveCt:c:w:u:p:x:X:mklM", long_options, &option_index);
+ c = getopt_long (argc, argv, "+?VqhveCt:c:w:u:p:x:X:mklM", longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -363,7 +363,7 @@ process_arguments (int argc, char **argv)
break;
case 'p': /* select path */
se = (struct name_list *) malloc (sizeof (struct name_list));
- se->name = strdup (optarg);
+ se->name = optarg;
se->name_next = NULL;
se->w_df = w_df;
se->c_df = c_df;
@@ -374,14 +374,14 @@ process_arguments (int argc, char **argv)
break;
case 'x': /* exclude path or partition */
se = (struct name_list *) malloc (sizeof (struct name_list));
- se->name = strdup (optarg);
+ se->name = optarg;
se->name_next = NULL;
*dptail = se;
dptail = &se->name_next;
break;
case 'X': /* exclude file system type */
se = (struct name_list *) malloc (sizeof (struct name_list));
- se->name = strdup (optarg);
+ se->name = optarg;
se->name_next = NULL;
*fstail = se;
fstail = &se->name_next;
diff --git a/plugins/check_dns.c b/plugins/check_dns.c
index 8b3bb4f6..afc23a4f 100644
--- a/plugins/check_dns.c
+++ b/plugins/check_dns.c
@@ -54,47 +54,11 @@ const char *revision = "$Revision$";
const char *copyright = "2000-2003";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
-void
-print_usage (void)
-{
- printf (_("\
-Usage: %s -H host [-s server] [-a expected-address] [-t timeout]\n\
- %s --help\n\
- %s --version\n"),
- progname, progname, progname);
-}
-
-void
-print_help (void)
-{
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_("\
--H, --hostname=HOST\n\
- The name or address you want to query\n\
--s, --server=HOST\n\
- Optional DNS server you want to use for the lookup\n\
--a, --expected-address=IP-ADDRESS\n\
- Optional IP address you expect the DNS server to return\n"));
-
- printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
-
- printf (_("\n\
-This plugin uses the nslookup program to obtain the IP address\n\
-for the given host/domain query. A optional DNS server to use may\n\
-be specified. If no DNS server is specified, the default server(s)\n\
-specified in /etc/resolv.conf will be used.\n"));
-}
-
int process_arguments (int, char **);
int validate_arguments (void);
int error_scan (char *);
+void print_help (void);
+void print_usage (void);
#define ADDRESS_LENGTH 256
char query_address[ADDRESS_LENGTH] = "";
@@ -421,3 +385,51 @@ validate_arguments ()
else
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_("\
+-H, --hostname=HOST\n\
+ The name or address you want to query\n\
+-s, --server=HOST\n\
+ Optional DNS server you want to use for the lookup\n\
+-a, --expected-address=IP-ADDRESS\n\
+ Optional IP address you expect the DNS server to return\n"));
+
+ printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+ printf (_("\n\
+This plugin uses the nslookup program to obtain the IP address\n\
+for the given host/domain query. A optional DNS server to use may\n\
+be specified. If no DNS server is specified, the default server(s)\n\
+specified in /etc/resolv.conf will be used.\n"));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("\
+Usage: %s -H host [-s server] [-a expected-address] [-t timeout]\n\
+ %s --help\n\
+ %s --version\n"),
+ progname, progname, progname);
+}
diff --git a/plugins/check_fping.c b/plugins/check_fping.c
index 7e4049c8..bb178305 100644
--- a/plugins/check_fping.c
+++ b/plugins/check_fping.c
@@ -34,6 +34,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
#include "popen.h"
+#include "netutils.h"
#include "utils.h"
#define PACKET_COUNT 1
@@ -44,54 +45,11 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#define PL 0
#define RTA 1
-void
-print_usage (void)
-{
- printf (_("Usage: %s <host_address>\n"), progname);
-}
-
-void
-print_help (void)
-{
-
- print_revision (progname, "$Revision$");
-
- printf (_("\
-Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n\n\
-This plugin will use the /bin/fping command (from saint) to ping the\n\
-specified host for a fast check if the host is alive. Note that it is\n\
-necessary to set the suid flag on fping.\n\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_("\
- -H, --hostname=HOST\n\
- Name or IP Address of host to ping (IP Address bypasses name lookup,\n\
- reducing system load)\n\
- -w, --warning=THRESHOLD\n\
- warning threshold pair\n\
- -c, --critical=THRESHOLD\n\
- critical threshold pair\n\
- -b, --bytes=INTEGER\n\
- Size of ICMP packet (default: %d)\n\
- -n, --number=INTEGER\n\
- Number of ICMP packets to send (default: %d)\n"),
- PACKET_SIZE, PACKET_COUNT);
-
- printf (_(UT_VERBOSE));
-
- printf (_("\n\
-THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel\n\
-time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the\n\
-percentage of packet loss to trigger an alarm state.\n"));
-
-}
-
int textscan (char *buf);
int process_arguments (int, char **);
int get_threshold (char *arg, char *rv[2]);
+void print_help (void);
+void print_usage (void);
char *server_name = NULL;
int cpl = UNKNOWN_PACKET_LOSS;
@@ -200,11 +158,11 @@ textscan (char *buf)
rta = strtod (rtastr, NULL);
if (cpl != UNKNOWN_PACKET_LOSS && loss > cpl)
status = STATE_CRITICAL;
- else if (crta != UNKNOWN_TRIP_TIME && rta > crta)
+ else if (crta <= 0 && rta > crta)
status = STATE_CRITICAL;
else if (wpl != UNKNOWN_PACKET_LOSS && loss > wpl)
status = STATE_WARNING;
- else if (wrta != UNKNOWN_TRIP_TIME && rta > wrta)
+ else if (wrta >= 0 && rta > wrta)
status = STATE_WARNING;
else
status = STATE_OK;
@@ -218,7 +176,7 @@ textscan (char *buf)
losstr = 1 + strstr (losstr, "/");
losstr = 1 + strstr (losstr, "/");
loss = strtod (losstr, NULL);
- if (loss == 100)
+ if (atoi(losstr) == 100)
status = STATE_CRITICAL;
else if (cpl != UNKNOWN_PACKET_LOSS && loss > cpl)
status = STATE_CRITICAL;
@@ -248,8 +206,8 @@ process_arguments (int argc, char **argv)
int c;
char *rv[2];
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"critical", required_argument, 0, 'c'},
{"warning", required_argument, 0, 'w'},
@@ -275,7 +233,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
@@ -389,3 +347,58 @@ get_threshold (char *arg, char *rv[2])
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+
+ print_revision (progname, "$Revision$");
+
+ printf (_("\
+Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n\n\
+This plugin will use the /bin/fping command (from saint) to ping the\n\
+specified host for a fast check if the host is alive. Note that it is\n\
+necessary to set the suid flag on fping.\n\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_("\
+ -H, --hostname=HOST\n\
+ Name or IP Address of host to ping (IP Address bypasses name lookup,\n\
+ reducing system load)\n\
+ -w, --warning=THRESHOLD\n\
+ warning threshold pair\n\
+ -c, --critical=THRESHOLD\n\
+ critical threshold pair\n\
+ -b, --bytes=INTEGER\n\
+ Size of ICMP packet (default: %d)\n\
+ -n, --number=INTEGER\n\
+ Number of ICMP packets to send (default: %d)\n"),
+ PACKET_SIZE, PACKET_COUNT);
+
+ printf (_(UT_VERBOSE));
+
+ printf (_("\n\
+THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel\n\
+time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the\n\
+percentage of packet loss to trigger an alarm state.\n"));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("Usage: %s <host_address>\n"), progname);
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/check_game.c b/plugins/check_game.c
index 2b109915..d5de13db 100644
--- a/plugins/check_game.c
+++ b/plugins/check_game.c
@@ -25,48 +25,10 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "popen.h"
#include "utils.h"
-void
-print_usage (void)
-{
- printf (_("\
-Usage: %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field]\n\
- [-pf ping_field]\n"), progname);
- printf (_(UT_HLP_VRS), progname, progname);
-}
-
-void
-print_help (void)
-{
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("This plugin tests %s connections with the specified host."), progname);
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_("\
-<game> = Game type that is recognised by qstat (without the leading dash)\n\
-<ip_address> = The IP address of the device you wish to query\n\
- [port] = Optional port of which to connect\n\
- [game_field] = Field number in raw qstat output that contains game name\n\
- [map_field] = Field number in raw qstat output that contains map name\n\
- [ping_field] = Field number in raw qstat output that contains ping time\n"),
- DEFAULT_SOCKET_TIMEOUT);
-
- printf (_("\n\
-Notes:\n\
-- This plugin uses the 'qstat' command, the popular game server status query tool .\n\
- If you don't have the package installed, you will need to download it from\n\
- http://www.activesw.com/people/steve/qstat.html before you can use this plugin.\n"));
-
- printf (_(UT_SUPPORT));
-}
-
int process_arguments (int, char **);
int validate_arguments (void);
+void print_help (void);
+void print_usage (void);
#define QSTAT_DATA_DELIMITER ","
@@ -152,7 +114,7 @@ main (int argc, char **argv)
/* initialize the returned data buffer */
for (i = 0; i < QSTAT_MAX_RETURN_ARGS; i++)
- ret[i] = "";
+ ret[i] = strdup("");
i = 0;
p = (char *) strtok (input_buffer, QSTAT_DATA_DELIMITER);
@@ -253,7 +215,7 @@ process_arguments (int argc, char **argv)
case 'H': /* hostname */
if (strlen (optarg) >= MAX_HOST_ADDRESS_LENGTH)
die (STATE_UNKNOWN, _("Input buffer overflow\n"));
- server_ip = strdup (optarg);
+ server_ip = optarg;
break;
case 'P': /* port */
port = atoi (optarg);
@@ -261,7 +223,7 @@ process_arguments (int argc, char **argv)
case 'G': /* hostname */
if (strlen (optarg) >= MAX_INPUT_BUFFER)
die (STATE_UNKNOWN, _("Input buffer overflow\n"));
- game_type = strdup (optarg);
+ game_type = optarg;
break;
case 'p': /* index of ping field */
qstat_ping_field = atoi (optarg);
@@ -308,3 +270,52 @@ validate_arguments (void)
{
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("This plugin tests %s connections with the specified host."), progname);
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_("\
+<game> = Game type that is recognised by qstat (without the leading dash)\n\
+<ip_address> = The IP address of the device you wish to query\n\
+ [port] = Optional port of which to connect\n\
+ [game_field] = Field number in raw qstat output that contains game name\n\
+ [map_field] = Field number in raw qstat output that contains map name\n\
+ [ping_field] = Field number in raw qstat output that contains ping time\n"));
+
+ printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+ printf (_("\n\
+Notes:\n\
+- This plugin uses the 'qstat' command, the popular game server status query tool .\n\
+ If you don't have the package installed, you will need to download it from\n\
+ http://www.activesw.com/people/steve/qstat.html before you can use this plugin.\n"));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("\
+Usage: %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field]\n\
+ [-pf ping_field]\n"), progname);
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c
index cb93a36e..edde341e 100644
--- a/plugins/check_hpjd.c
+++ b/plugins/check_hpjd.c
@@ -29,36 +29,7 @@ const char *copyright = "2000-2003";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
const char *option_summary = "-H host [-C community]\n";
-void
-print_usage (void)
-{
- printf (_("\
-Usage: %s -H host [-C community]\n"), progname);
- printf (_(UT_HLP_VRS), progname, progname);
-}
-void
-print_help (void)
-{
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("\
-This plugin tests the STATUS of an HP printer with a JetDirect card.\n\
-Net-snmp must be installed on the computer running the plugin.\n\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_("\
- -C, --community=STRING\n\
- The SNMP community name (default=%s)\n"), DEFAULT_COMMUNITY);
-
- printf (_(UT_SUPPORT));
-}
-
#define HPJD_LINE_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.1"
#define HPJD_PAPER_STATUS ".1.3.6.1.4.1.11.2.3.9.1.1.2.2"
#define HPJD_INTERVENTION_REQUIRED ".1.3.6.1.4.1.11.2.3.9.1.1.2.3"
@@ -77,8 +48,10 @@ Net-snmp must be installed on the computer running the plugin.\n\n"));
int process_arguments (int, char **);
int validate_arguments (void);
+void print_help (void);
+void print_usage (void);
-char *community = DEFAULT_COMMUNITY;
+char *community = NULL;
char *address = NULL;
int
@@ -89,7 +62,7 @@ main (int argc, char **argv)
int line;
char input_buffer[MAX_INPUT_BUFFER];
char query_string[512];
- char error_message[MAX_INPUT_BUFFER];
+ char *errmsg;
char *temp_buffer;
int line_status = ONLINE;
int paper_status = 0;
@@ -103,7 +76,8 @@ main (int argc, char **argv)
int door_open = 0;
int paper_output = 0;
char display_message[MAX_INPUT_BUFFER];
- char *temp ;
+
+ errmsg = malloc(MAX_INPUT_BUFFER);
if (process_arguments (argc, argv) != OK)
usage (_("Invalid command arguments supplied\n"));
@@ -154,118 +128,55 @@ main (int argc, char **argv)
temp_buffer = strtok (input_buffer, "=");
temp_buffer = strtok (NULL, "=");
- switch (line) {
+ if (temp_buffer != NULL) {
- case 1: /* 1st line should contain the line status */
- if (temp_buffer != NULL)
- line_status = atoi (temp_buffer);
- else {
result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
+ strcpy (errmsg, input_buffer);
- case 2: /* 2nd line should contain the paper status */
- if (temp_buffer != NULL)
- paper_status = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
+ } else {
- case 3: /* 3rd line should be intervention required */
- if (temp_buffer != NULL)
- intervention_required = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
+ switch (line) {
- case 4: /* 4th line should be peripheral error */
- if (temp_buffer != NULL)
+ case 1: /* 1st line should contain the line status */
+ line_status = atoi (temp_buffer);
+ break;
+ case 2: /* 2nd line should contain the paper status */
+ paper_status = atoi (temp_buffer);
+ break;
+ case 3: /* 3rd line should be intervention required */
+ intervention_required = atoi (temp_buffer);
+ break;
+ case 4: /* 4th line should be peripheral error */
peripheral_error = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 5: /* 5th line should contain the paper jam status */
- if (temp_buffer != NULL)
+ break;
+ case 5: /* 5th line should contain the paper jam status */
paper_jam = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 6: /* 6th line should contain the paper out status */
- if (temp_buffer != NULL)
+ break;
+ case 6: /* 6th line should contain the paper out status */
paper_out = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 7: /* 7th line should contain the toner low status */
- if (temp_buffer != NULL)
+ break;
+ case 7: /* 7th line should contain the toner low status */
toner_low = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 8: /* did data come too slow for engine */
- if (temp_buffer != NULL)
+ break;
+ case 8: /* did data come too slow for engine */
page_punt = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 9: /* did we run out of memory */
- if (temp_buffer != NULL)
+ break;
+ case 9: /* did we run out of memory */
memory_out = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 10: /* is there a door open */
- if (temp_buffer != NULL)
+ break;
+ case 10: /* is there a door open */
door_open = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 11: /* is output tray full */
- if (temp_buffer != NULL)
+ break;
+ case 11: /* is output tray full */
paper_output = atoi (temp_buffer);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
- }
- break;
-
- case 12: /* display panel message */
- if (temp_buffer != NULL)
+ break;
+ case 12: /* display panel message */
strcpy (display_message, temp_buffer + 1);
- else {
- result = STATE_UNKNOWN;
- strcpy (error_message, input_buffer);
+ break;
+ default:
+ break;
}
- break;
- default:
- break;
}
/* break out of the read loop if we encounter an error */
@@ -279,7 +190,7 @@ main (int argc, char **argv)
/* remove CRLF */
if (input_buffer[strlen (input_buffer) - 1] == '\n')
input_buffer[strlen (input_buffer) - 1] = 0;
- sprintf (error_message, "%s", input_buffer );
+ sprintf (errmsg, "%s", input_buffer );
}
@@ -295,8 +206,7 @@ main (int argc, char **argv)
/* might not be the problem, but most likely is. */
result = STATE_UNKNOWN ;
- asprintf (&temp, error_message);
- sprintf (error_message, "%s : Timeout from host %s\n", temp, address );
+ asprintf (&errmsg, "%s : Timeout from host %s\n", errmsg, address );
}
@@ -305,49 +215,49 @@ main (int argc, char **argv)
if (paper_jam) {
result = STATE_WARNING;
- strcpy (error_message, _("Paper Jam"));
+ strcpy (errmsg, _("Paper Jam"));
}
else if (paper_out) {
result = STATE_WARNING;
- strcpy (error_message, _("Out of Paper"));
+ strcpy (errmsg, _("Out of Paper"));
}
else if (line_status == OFFLINE) {
- if (strcmp (error_message, "POWERSAVE ON") != 0) {
+ if (strcmp (errmsg, "POWERSAVE ON") != 0) {
result = STATE_WARNING;
- strcpy (error_message, _("Printer Offline"));
+ strcpy (errmsg, _("Printer Offline"));
}
}
else if (peripheral_error) {
result = STATE_WARNING;
- strcpy (error_message, _("Peripheral Error"));
+ strcpy (errmsg, _("Peripheral Error"));
}
else if (intervention_required) {
result = STATE_WARNING;
- strcpy (error_message, _("Intervention Required"));
+ strcpy (errmsg, _("Intervention Required"));
}
else if (toner_low) {
result = STATE_WARNING;
- strcpy (error_message, _("Toner Low"));
+ strcpy (errmsg, _("Toner Low"));
}
else if (memory_out) {
result = STATE_WARNING;
- strcpy (error_message, _("Insufficient Memory"));
+ strcpy (errmsg, _("Insufficient Memory"));
}
else if (door_open) {
result = STATE_WARNING;
- strcpy (error_message, _("A Door is Open"));
+ strcpy (errmsg, _("A Door is Open"));
}
else if (paper_output) {
result = STATE_WARNING;
- strcpy (error_message, _("Output Tray is Full"));
+ strcpy (errmsg, _("Output Tray is Full"));
}
else if (page_punt) {
result = STATE_WARNING;
- strcpy (error_message, _("Data too Slow for Engine"));
+ strcpy (errmsg, _("Data too Slow for Engine"));
}
else if (paper_status) {
result = STATE_WARNING;
- strcpy (error_message, _("Unknown Paper Error"));
+ strcpy (errmsg, _("Unknown Paper Error"));
}
}
@@ -356,15 +266,15 @@ main (int argc, char **argv)
else if (result == STATE_UNKNOWN) {
- printf ("%s\n", error_message);
+ printf ("%s\n", errmsg);
/* if printer could not be reached, escalate to critical */
- if (strstr (error_message, "Timeout"))
+ if (strstr (errmsg, "Timeout"))
result = STATE_CRITICAL;
}
else if (result == STATE_WARNING)
- printf ("%s (%s)\n", error_message, display_message);
+ printf ("%s (%s)\n", errmsg, display_message);
return result;
}
@@ -379,8 +289,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"community", required_argument, 0, 'C'},
/* {"critical", required_argument,0,'c'}, */
@@ -396,7 +306,7 @@ process_arguments (int argc, char **argv)
while (1) {
- c = getopt_long (argc, argv, "+hVH:C:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+hVH:C:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
@@ -434,8 +344,11 @@ process_arguments (int argc, char **argv)
}
}
- if (argv[c] != NULL ) {
- community = argv[c];
+ if (community == NULL) {
+ if (argv[c] != NULL )
+ community = argv[c];
+ else
+ community = strdup (DEFAULT_COMMUNITY);
}
return validate_arguments ();
@@ -450,3 +363,41 @@ validate_arguments (void)
{
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("\
+This plugin tests the STATUS of an HP printer with a JetDirect card.\n\
+Net-snmp must be installed on the computer running the plugin.\n\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_("\
+ -C, --community=STRING\n\
+ The SNMP community name (default=%s)\n"), DEFAULT_COMMUNITY);
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("\
+Usage: %s -H host [-C community]\n"), progname);
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/check_http.c b/plugins/check_http.c
index 3321d5ac..27127d6a 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -184,8 +184,8 @@ process_arguments (int argc, char **argv)
{
int c = 1;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
STD_LONG_OPTS,
{"file",required_argument,0,'F'},
{"link", no_argument, 0, 'L'},
@@ -224,7 +224,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "Vvh46t:c:w:H:P:I:a:e:p:s:R:r:u:f:C:nlLSm:", long_options, &option_index);
+ c = getopt_long (argc, argv, "Vvh46t:c:w:H:P:I:a:e:p:s:R:r:u:f:C:nlLSm:", longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -304,10 +304,10 @@ process_arguments (int argc, char **argv)
break;
/* Note: H, I, and u must be malloc'd or will fail on redirects */
case 'H': /* Host Name (virtual host) */
- host_name = strdup (optarg);
+ host_name = optarg;
break;
case 'I': /* Server IP-address */
- server_address = strdup(optarg);
+ server_address = optarg;
break;
case 'u': /* URL path */
asprintf (&server_url, "%s", optarg);
@@ -328,7 +328,7 @@ process_arguments (int argc, char **argv)
case 'P': /* HTTP POST data in URL encoded format */
if (http_method || http_post_data) break;
http_method = strdup("POST");
- http_post_data = strdup(optarg);
+ http_post_data = optarg;
break;
case 's': /* string or substring */
strncpy (string_expect, optarg, MAX_INPUT_BUFFER - 1);
diff --git a/plugins/check_ldap.c b/plugins/check_ldap.c
index 2064dd3b..d2c6ae22 100644
--- a/plugins/check_ldap.c
+++ b/plugins/check_ldap.c
@@ -36,75 +36,18 @@ enum {
DEFAULT_PORT = 389
};
-void
-print_usage ()
-{
- printf (_("\
-Usage: %s -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]\n\
- [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]%s\n\
-(Note: all times are in seconds.)\n"),
- progname, (HAVE_LDAP_SET_OPTION ? "[-2|-3] [-4|-6]" : ""));
- printf (_(UT_HLP_VRS), progname, progname);
-}
-
-void
-print_help ()
-{
- char *myport;
- asprintf (&myport, "%d", DEFAULT_PORT);
-
- print_revision (progname, revision);
-
- printf (_("Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n"));
- printf (_(COPYRIGHT), copyright, email);
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_(UT_HOST_PORT), 'p', myport);
-
- printf (_(UT_IPv46));
-
- printf (_("\
- -a [--attr]\n\
- ldap attribute to search (default: \"(objectclass=*)\"\n\
- -b [--base]\n\
- ldap base (eg. ou=my unit, o=my org, c=at)\n\
- -D [--bind]\n\
- ldap bind DN (if required)\n\
- -P [--pass]\n\
- ldap password (if required)\n"));
-
-#ifdef HAVE_LDAP_SET_OPTION
- printf (_("\
- -2 [--ver2]\n\
- use ldap protocol version 2\n\
- -3 [--ver3]\n\
- use ldap protocol version 3\n\
- (default protocol version: %d)\n"),
- DEFAULT_PROTOCOL);
-#endif
-
- printf (_(UT_WARN_CRIT));
-
- printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
-
- printf (_(UT_VERBOSE));
-
- printf (_(UT_SUPPORT));
-}
-
int process_arguments (int, char **);
int validate_arguments (void);
+void print_help (void);
+void print_usage (void);
char ld_defattr[] = "(objectclass=*)";
char *ld_attr = ld_defattr;
-char *ld_host = "";
-char *ld_base = "";
+char *ld_host = NULL;
+char *ld_base = NULL;
char *ld_passwd = NULL;
char *ld_binddn = NULL;
-unsigned int ld_port = DEFAULT_PORT;
+int ld_port = DEFAULT_PORT;
#ifdef HAVE_LDAP_SET_OPTION
int ld_protocol = DEFAULT_PROTOCOL;
#endif
@@ -198,7 +141,7 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
+ int option = 0;
/* initialize the long option struct */
static struct option longopts[] = {
{"help", no_argument, 0, 'h'},
@@ -230,7 +173,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "hV2346t:c:w:H:b:p:a:D:P:", longopts, &option_index);
+ c = getopt_long (argc, argv, "hV2346t:c:w:H:b:p:a:D:P:", longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -245,7 +188,8 @@ process_arguments (int argc, char **argv)
case 't': /* timeout period */
if (!is_intnonneg (optarg))
usage2 (_("timeout interval must be a positive integer"), optarg);
- socket_timeout = atoi (optarg);
+ else
+ socket_timeout = atoi (optarg);
break;
case 'H':
ld_host = optarg;
@@ -296,12 +240,11 @@ process_arguments (int argc, char **argv)
}
c = optind;
- if (strlen(ld_host) == 0 && is_host(argv[c])) {
- asprintf (&ld_host, "%s", argv[c++]);
- }
- if (strlen(ld_base) == 0 && argv[c]) {
- asprintf (&ld_base, "%s", argv[c++]);
- }
+ if (ld_host == NULL && is_host(argv[c]))
+ ld_host = strdup (argv[c++]);
+
+ if (ld_base == NULL && argv[c])
+ ld_base = strdup (argv[c++]);
return validate_arguments ();
}
@@ -318,3 +261,70 @@ validate_arguments ()
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ char *myport;
+ asprintf (&myport, "%d", DEFAULT_PORT);
+
+ print_revision (progname, revision);
+
+ printf (_("Copyright (c) 1999 Didi Rieder (adrieder@sbox.tu-graz.ac.at)\n"));
+ printf (_(COPYRIGHT), copyright, email);
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_(UT_HOST_PORT), 'p', myport);
+
+ printf (_(UT_IPv46));
+
+ printf (_("\
+ -a [--attr]\n\
+ ldap attribute to search (default: \"(objectclass=*)\"\n\
+ -b [--base]\n\
+ ldap base (eg. ou=my unit, o=my org, c=at)\n\
+ -D [--bind]\n\
+ ldap bind DN (if required)\n\
+ -P [--pass]\n\
+ ldap password (if required)\n"));
+
+#ifdef HAVE_LDAP_SET_OPTION
+ printf (_("\
+ -2 [--ver2]\n\
+ use ldap protocol version 2\n\
+ -3 [--ver3]\n\
+ use ldap protocol version 3\n\
+ (default protocol version: %d)\n"),
+ DEFAULT_PROTOCOL);
+#endif
+
+ printf (_(UT_WARN_CRIT));
+
+ printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+ printf (_(UT_VERBOSE));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("\
+Usage: %s -H <host> -b <base_dn> [-p <port>] [-a <attr>] [-D <binddn>]\n\
+ [-P <password>] [-w <warn_time>] [-c <crit_time>] [-t timeout]%s\n\
+(Note: all times are in seconds.)\n"),
+ progname, (HAVE_LDAP_SET_OPTION ? "[-2|-3] [-4|-6]" : ""));
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/check_load.c b/plugins/check_load.c
index bdb1e55d..c12cad37 100644
--- a/plugins/check_load.c
+++ b/plugins/check_load.c
@@ -158,8 +158,8 @@ process_arguments (int argc, char **argv)
{
int c = 0;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"warning", required_argument, 0, 'w'},
{"critical", required_argument, 0, 'c'},
{"version", no_argument, 0, 'V'},
@@ -171,7 +171,7 @@ process_arguments (int argc, char **argv)
return ERROR;
while (1) {
- c = getopt_long (argc, argv, "Vhc:w:", long_options, &option_index);
+ c = getopt_long (argc, argv, "Vhc:w:", longopts, &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_mrtg.c b/plugins/check_mrtg.c
index 21efac2e..849e636f 100644
--- a/plugins/check_mrtg.c
+++ b/plugins/check_mrtg.c
@@ -149,8 +149,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"logfile", required_argument, 0, 'F'},
{"expires", required_argument, 0, 'e'},
{"aggregation", required_argument, 0, 'a'},
@@ -178,8 +178,8 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "hVF:e:a:v:c:w:l:u:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "hVF:e:a:v:c:w:l:u:", longopts,
+ &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_mrtgtraf.c b/plugins/check_mrtgtraf.c
index be2f562e..93b2c1d0 100644
--- a/plugins/check_mrtgtraf.c
+++ b/plugins/check_mrtgtraf.c
@@ -201,7 +201,7 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
+ int option = 0;
static struct option longopts[] = {
{"logfile", required_argument, 0, 'F'},
{"expires", required_argument, 0, 'e'},
@@ -228,7 +228,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "hVF:e:a:c:w:", longopts, &option_index);
+ c = getopt_long (argc, argv, "hVF:e:a:c:w:", longopts, &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_mysql.c b/plugins/check_mysql.c
index 16a1f133..a7afa52f 100644
--- a/plugins/check_mysql.c
+++ b/plugins/check_mysql.c
@@ -25,65 +25,23 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include <mysql/mysql.h>
#include <mysql/errmsg.h>
-void
-print_usage (void)
-{
- printf (_("\
-Usage: %s [-d database] [-H host] [-P port] [-u user] [-p password]\n"),
- progname);
- printf (_(UT_HLP_VRS), progname, progname);
-}
-
-void
-print_help (void)
-{
- char *myport;
- asprintf (&myport, "%d", MYSQL_PORT);
-
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("This program tests connections to a mysql server\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_(UT_HOST_PORT), 'P', myport);
-
- printf (_("\
- -d, --database=STRING\n\
- Check database with indicated name\n\
- -u, --username=STRING\n\
- Connect using the indicated username\n\
- -p, --password=STRING\n\
- Use the indicated password to authenticate the connection\n\
- ==> IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!! <==\n\
- Your clear-text password will be visible as a process table entry\n"));
-
- printf (_("\n\
-There are no required arguments. By default, the local database with\n\
-a server listening on MySQL standard port %d will be checked\n"), MYSQL_PORT);
-
- printf (_(UT_SUPPORT));
-}
-
-char *db_user = "";
-char *db_host = "";
-char *db_pass = "";
-char *db = "";
+char *db_user = NULL;
+char *db_host = NULL;
+char *db_pass = NULL;
+char *db = NULL;
unsigned int db_port = MYSQL_PORT;
int process_arguments (int, char **);
int validate_arguments (void);
+void print_help (void);
+void print_usage (void);
int
main (int argc, char **argv)
{
MYSQL mysql;
- char result[1024];
+ char *result = NULL;
if (process_arguments (argc, argv) != OK)
usage (_("Invalid command arguments supplied\n"));
@@ -92,62 +50,32 @@ main (int argc, char **argv)
mysql_init (&mysql);
/* establish a connection to the server and error checking */
- if (!mysql_real_connect
- (&mysql, db_host, db_user, db_pass, db, db_port, NULL, 0)) {
-
- if (mysql_errno (&mysql) == CR_UNKNOWN_HOST) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_WARNING;
-
- }
- else if (mysql_errno (&mysql) == CR_VERSION_ERROR) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_WARNING;
-
- }
- else if (mysql_errno (&mysql) == CR_OUT_OF_MEMORY) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_WARNING;
-
- }
- else if (mysql_errno (&mysql) == CR_IPSOCK_ERROR) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_WARNING;
-
- }
- else if (mysql_errno (&mysql) == CR_SOCKET_CREATE_ERROR) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_WARNING;
-
- }
- else {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_CRITICAL;
- }
-
+ if (!mysql_real_connect(&mysql,db_host,db_user,db_pass,db,db_port,NULL,0)) {
+ if (mysql_errno (&mysql) == CR_UNKNOWN_HOST)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_VERSION_ERROR)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_OUT_OF_MEMORY)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_IPSOCK_ERROR)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_SOCKET_CREATE_ERROR)
+ die (STATE_WARNING, "%s\n", mysql_error (&mysql));
+ else
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
}
/* get the server stats */
- sprintf (result, mysql_stat (&mysql));
+ result = strdup (mysql_stat (&mysql));
/* error checking once more */
if (mysql_error (&mysql)) {
-
- if (mysql_errno (&mysql) == CR_SERVER_GONE_ERROR) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_CRITICAL;
-
- }
- else if (mysql_errno (&mysql) == CR_SERVER_LOST) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_CRITICAL;
-
- }
- else if (mysql_errno (&mysql) == CR_UNKNOWN_ERROR) {
- printf ("%s\n", mysql_error (&mysql));
- return STATE_UNKNOWN;
- }
-
+ if (mysql_errno (&mysql) == CR_SERVER_GONE_ERROR)
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_SERVER_LOST)
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
+ else if (mysql_errno (&mysql) == CR_UNKNOWN_ERROR)
+ die (STATE_CRITICAL, "%s\n", mysql_error (&mysql));
}
/* close the connection */
@@ -169,8 +97,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"database", required_argument, 0, 'd'},
{"username", required_argument, 0, 'u'},
@@ -186,7 +114,7 @@ process_arguments (int argc, char **argv)
return ERROR;
while (1) {
- c = getopt_long (argc, argv, "hVP:p:u:d:H:", long_options, &option_index);
+ c = getopt_long (argc, argv, "hVP:p:u:d:H:", longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -256,5 +184,69 @@ process_arguments (int argc, char **argv)
int
validate_arguments (void)
{
+ if (db_user == NULL)
+ db_user = strdup("");
+
+ if (db_host == NULL)
+ db_host = strdup("");
+
+ if (db_pass == NULL)
+ db_pass == strdup("");
+
+ if (db == NULL)
+ db = strdup("");
+
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ char *myport;
+ asprintf (&myport, "%d", MYSQL_PORT);
+
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("This program tests connections to a mysql server\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_(UT_HOST_PORT), 'P', myport);
+
+ printf (_("\
+ -d, --database=STRING\n\
+ Check database with indicated name\n\
+ -u, --username=STRING\n\
+ Connect using the indicated username\n\
+ -p, --password=STRING\n\
+ Use the indicated password to authenticate the connection\n\
+ ==> IMPORTANT: THIS FORM OF AUTHENTICATION IS NOT SECURE!!! <==\n\
+ Your clear-text password will be visible as a process table entry\n"));
+
+ printf (_("\n\
+There are no required arguments. By default, the local database with\n\
+a server listening on MySQL standard port %d will be checked\n"), MYSQL_PORT);
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("\
+Usage: %s [-d database] [-H host] [-P port] [-u user] [-p password]\n"),
+ progname);
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/check_nagios.c b/plugins/check_nagios.c
index a678e2a4..5b21ba1d 100644
--- a/plugins/check_nagios.c
+++ b/plugins/check_nagios.c
@@ -25,48 +25,9 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "popen.h"
#include "utils.h"
-void
-print_usage (void)
-{
- printf (_("\
-Usage: %s -F <status log file> -e <expire_minutes> -C <process_string>\n"),
- progname);
-}
-
-void
-print_help (void)
-{
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("\
-This plugin attempts to check the status of the Nagios process on the local\n\
-machine. The plugin will check to make sure the Nagios status log is no older\n\
-than the number of minutes specified by the <expire_minutes> option. It also\n\
-uses the /bin/ps command to check for a process matching whatever you specify\n\
-by the <process_string> argument.\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_("\
--F, --filename=FILE\n\
- Name of the log file to check\n\
--e, --expires=INTEGER\n\
- Seconds aging afterwhich logfile is condsidered stale\n\
--C, --command=STRING\n\
- Command to search for in process table\n"));
-
- printf (_("\
-Example:\n\
- ./check_nagios -e 5 \\\
- -F /usr/local/nagios/var/status.log \\\
- -C /usr/local/nagios/bin/nagios\n"));
-}
-
int process_arguments (int, char **);
+void print_help (void);
+void print_usage (void);
char *status_log = NULL;
char *process_string = NULL;
@@ -198,8 +159,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"filename", required_argument, 0, 'F'},
{"expires", required_argument, 0, 'e'},
{"command", required_argument, 0, 'C'},
@@ -225,7 +186,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "+hVvF:C:e:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+hVvF:C:e:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
@@ -252,8 +213,8 @@ process_arguments (int argc, char **argv)
expire_minutes = atoi (optarg);
else
die (STATE_UNKNOWN,
- _("Expiration time must be an integer (seconds)\nType '%s -h' for additional help\n"),
- progname);
+ _("Expiration time must be an integer (seconds)\nType '%s -h' for additional help\n"),
+ progname);
break;
case 'v':
verbose++;
@@ -264,8 +225,8 @@ process_arguments (int argc, char **argv)
if (status_log == NULL)
die (STATE_UNKNOWN,
- _("You must provide the status_log\nType '%s -h' for additional help\n"),
- progname);
+ _("You must provide the status_log\nType '%s -h' for additional help\n"),
+ progname);
else if (process_string == NULL)
die (STATE_UNKNOWN,
_("You must provide a process string\nType '%s -h' for additional help\n"),
@@ -273,3 +234,52 @@ process_arguments (int argc, char **argv)
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("\
+This plugin attempts to check the status of the Nagios process on the local\n\
+machine. The plugin will check to make sure the Nagios status log is no older\n\
+than the number of minutes specified by the <expire_minutes> option. It also\n\
+uses the /bin/ps command to check for a process matching whatever you specify\n\
+by the <process_string> argument.\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_("\
+-F, --filename=FILE\n\
+ Name of the log file to check\n\
+-e, --expires=INTEGER\n\
+ Seconds aging afterwhich logfile is condsidered stale\n\
+-C, --command=STRING\n\
+ Command to search for in process table\n"));
+
+ printf (_("\
+Example:\n\
+ ./check_nagios -e 5 \\\
+ -F /usr/local/nagios/var/status.log \\\
+ -C /usr/local/nagios/bin/nagios\n"));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("\
+Usage: %s -F <status log file> -e <expire_minutes> -C <process_string>\n"),
+ progname);
+}
diff --git a/plugins/check_nt.c b/plugins/check_nt.c
index b1314d4b..3b2bd5e1 100644
--- a/plugins/check_nt.c
+++ b/plugins/check_nt.c
@@ -28,7 +28,6 @@
*
*****************************************************************************/
-#include "config.h"
#include "common.h"
#include "netutils.h"
#include "utils.h"
@@ -331,8 +330,8 @@ int main(int argc, char **argv){
int process_arguments(int argc, char **argv){
int c;
- int option_index = 0;
- static struct option long_options[] =
+ int option = 0;
+ static struct option longopts[] =
{
{"port", required_argument,0,'p'},
{"timeout", required_argument,0,'t'},
@@ -366,7 +365,7 @@ int process_arguments(int argc, char **argv){
}
while (1){
- c = getopt_long(argc,argv,"+hVH:t:c:w:p:v:l:s:d:",long_options,&option_index);
+ c = getopt_long(argc,argv,"+hVH:t:c:w:p:v:l:s:d:",longopts,&option);
if (c==-1||c==EOF||c==1)
break;
@@ -385,10 +384,10 @@ int process_arguments(int argc, char **argv){
exit(STATE_OK);
case 'H': /* hostname */
if (server_address) free(server_address);
- server_address = strdup(optarg);
+ server_address = optarg;
break;
case 's': /* password */
- req_password = strdup (optarg);
+ req_password = optarg;
break;
case 'p': /* port */
if (is_intnonneg(optarg))
@@ -421,7 +420,7 @@ int process_arguments(int argc, char **argv){
return ERROR;
break;
case 'l': /* value list */
- value_list = strdup (optarg);
+ value_list = optarg;
break;
case 'w': /* warning threshold */
warning_value=strtoul(optarg,NULL,10);
diff --git a/plugins/check_nwstat.c b/plugins/check_nwstat.c
index 4b227269..92a1f117 100644
--- a/plugins/check_nwstat.c
+++ b/plugins/check_nwstat.c
@@ -705,8 +705,8 @@ main(int argc, char **argv) {
int process_arguments(int argc, char **argv) {
int c;
- int option_index = 0;
- static struct option long_options[] =
+ int option = 0;
+ static struct option longopts[] =
{
{"port", required_argument,0,'p'},
{"timeout", required_argument,0,'t'},
@@ -741,7 +741,7 @@ int process_arguments(int argc, char **argv) {
}
while (1) {
- c = getopt_long(argc,argv,"+hoVH:t:c:w:p:v:",long_options,&option_index);
+ c = getopt_long(argc,argv,"+hoVH:t:c:w:p:v:",longopts,&option);
if (c==-1||c==EOF||c==1)
break;
diff --git a/plugins/check_overcr.c b/plugins/check_overcr.c
index 9958432e..67fb5d1f 100644
--- a/plugins/check_overcr.c
+++ b/plugins/check_overcr.c
@@ -285,8 +285,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"port", required_argument, 0, 'p'},
{"timeout", required_argument, 0, 't'},
{"critical", required_argument, 0, 'c'},
@@ -320,8 +320,8 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "+hVH:t:c:w:p:v:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "+hVH:t:c:w:p:v:", longopts,
+ &option);
if (c == -1 || c == EOF || c == 1)
break;
diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c
index 2dce0b35..6cd217e0 100644
--- a/plugins/check_pgsql.c
+++ b/plugins/check_pgsql.c
@@ -1,26 +1,19 @@
/******************************************************************************
- *
- * Program: PostgreSQL plugin for Nagios
- * License: GPL
- *
- * License Information:
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * $Id$
- *
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
*****************************************************************************/
#define DEFAULT_DB "template1"
@@ -32,9 +25,9 @@ enum {
DEFAULT_CRIT = 8
};
-#include "config.h"
#include "common.h"
#include "utils.h"
+#include "netutils.h"
#include <libpq-fe.h>
int process_arguments (int, char **);
@@ -121,72 +114,6 @@ Please note that all tags must be lowercase to use the DocBook XML DTD.
-void
-print_help (void)
-{
- char *myport;
-
- asprintf (&myport, "%d", DEFAULT_PORT);
-
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("Test whether a PostgreSQL DBMS is accepting connections.\n\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_(UT_HOST_PORT), 'P', myport);
-
- printf (_(UT_IPv46));
-
- printf (S_("\
- -d, --database=STRING\n\
- Database to check (default: %s)\n\
- -l, --logname = STRING\n\
- Login name of user\n\
- -p, --password = STRING\n\
- Password (BIG SECURITY ISSUE)\n"), DEFAULT_DB);
-
- printf (_(UT_WARN_CRIT));
-
- printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
-
- printf (_(UT_VERBOSE));
-
- printf (S_("\nAll parameters are optional.\n\
-\n\
-This plugin tests a PostgreSQL DBMS to determine whether it is active and\n\
-accepting queries. In its current operation, it simply connects to the\n\
-specified database, and then disconnects. If no database is specified, it\n\
-connects to the template1 database, which is present in every functioning \n\
-PostgreSQL DBMS.\n"));
- printf (S_("\n\
-The plugin will connect to a local postmaster if no host is specified. To\n\
-connect to a remote host, be sure that the remote postmaster accepts TCP/IP\n\
-connections (start the postmaster with the -i option).\n"));
- printf (S_("\n\
-Typically, the nagios user (unless the --logname option is used) should be\n\
-able to connect to the database without a password. The plugin can also send\n\
-a password, but no effort is made to obsure or encrypt the password.\n"));
-
- support ();
-}
-
-void
-print_usage (void)
-{
- printf (S_("\
-Usage:\n %s [-H <host>] [-P <port>] [-c <critical time>] [-w <warning time>]\n\
- [-t <timeout>]"), progname);
- printf (S_("[-d <database>] [-l <logname>] [-p <password>]\n"));
- printf (S_("\
- %s (-h | --help) for detailed help\n\
- %s (-V | --version) for version information\n"),
- progname, progname);
-}
int
main (int argc, char **argv)
@@ -251,8 +178,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"timeout", required_argument, 0, 't'},
@@ -269,7 +196,7 @@ process_arguments (int argc, char **argv)
while (1) {
c = getopt_long (argc, argv, "hVt:c:w:H:P:d:l:p:a:",
- long_options, &option_index);
+ longopts, &option);
if (c == EOF)
break;
@@ -277,6 +204,7 @@ process_arguments (int argc, char **argv)
switch (c) {
case '?': /* usage */
usage3 (_("Unknown argument"), optopt);
+ break;
case 'h': /* help */
print_help ();
exit (STATE_OK);
@@ -286,38 +214,44 @@ process_arguments (int argc, char **argv)
case 't': /* timeout period */
if (!is_integer (optarg))
usage2 (_("Timeout Interval must be an integer"), optarg);
- timeout_interval = atoi (optarg);
+ else
+ timeout_interval = atoi (optarg);
break;
case 'c': /* critical time threshold */
if (!is_integer (optarg))
usage2 (_("Invalid critical threshold"), optarg);
- tcrit = atoi (optarg);
+ else
+ tcrit = atoi (optarg);
break;
case 'w': /* warning time threshold */
if (!is_integer (optarg))
usage2 (_("Invalid critical threshold"), optarg);
- twarn = atoi (optarg);
+ else
+ twarn = atoi (optarg);
break;
case 'H': /* host */
if (!is_host (optarg))
usage2 (_("You gave an invalid host name"), optarg);
- pghost = optarg;
+ else
+ pghost = optarg;
break;
case 'P': /* port */
if (!is_integer (optarg))
usage2 (_("Port must be an integer"), optarg);
- pgport = optarg;
+ else
+ pgport = optarg;
break;
case 'd': /* database name */
- if (!is_pg_dbname (optarg))
+ if (!is_pg_dbname (optarg)) /* checks length and valid chars */
usage2 (_("Database name is not valid"), optarg);
- strncpy (dbName, optarg, NAMEDATALEN - 1);
- dbName[NAMEDATALEN - 1] = 0;
+ else /* we know length, and know optarg is terminated, so us strcpy */
+ strcpy (dbName, optarg);
break;
case 'l': /* login name */
if (!is_pg_logname (optarg))
usage2 (_("user name is not valid"), optarg);
- pguser = optarg;
+ else
+ pguser = optarg;
break;
case 'p': /* authentication password */
case 'a':
@@ -433,3 +367,78 @@ is_pg_logname (char *username)
</article>
-@@
******************************************************************************/
+
+
+
+
+
+void
+print_help (void)
+{
+ char *myport;
+
+ asprintf (&myport, "%d", DEFAULT_PORT);
+
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("Test whether a PostgreSQL DBMS is accepting connections.\n\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_(UT_HOST_PORT), 'P', myport);
+
+ printf (_(UT_IPv46));
+
+ printf (S_("\
+ -d, --database=STRING\n\
+ Database to check (default: %s)\n\
+ -l, --logname = STRING\n\
+ Login name of user\n\
+ -p, --password = STRING\n\
+ Password (BIG SECURITY ISSUE)\n"), DEFAULT_DB);
+
+ printf (_(UT_WARN_CRIT));
+
+ printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+ printf (_(UT_VERBOSE));
+
+ printf (S_("\nAll parameters are optional.\n\
+\n\
+This plugin tests a PostgreSQL DBMS to determine whether it is active and\n\
+accepting queries. In its current operation, it simply connects to the\n\
+specified database, and then disconnects. If no database is specified, it\n\
+connects to the template1 database, which is present in every functioning \n\
+PostgreSQL DBMS.\n"));
+ printf (S_("\n\
+The plugin will connect to a local postmaster if no host is specified. To\n\
+connect to a remote host, be sure that the remote postmaster accepts TCP/IP\n\
+connections (start the postmaster with the -i option).\n"));
+ printf (S_("\n\
+Typically, the nagios user (unless the --logname option is used) should be\n\
+able to connect to the database without a password. The plugin can also send\n\
+a password, but no effort is made to obsure or encrypt the password.\n"));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (S_("\
+Usage:\n %s [-H <host>] [-P <port>] [-c <critical time>] [-w <warning time>]\n\
+ [-t <timeout>]"), progname);
+ printf (S_("[-d <database>] [-l <logname>] [-p <password>]\n"));
+ printf (S_("\
+ %s (-h | --help) for detailed help\n\
+ %s (-V | --version) for version information\n"),
+ progname, progname);
+}
+
diff --git a/plugins/check_ping.c b/plugins/check_ping.c
index fd73b8ce..87f9db01 100644
--- a/plugins/check_ping.c
+++ b/plugins/check_ping.c
@@ -162,8 +162,8 @@ process_arguments (int argc, char **argv)
int c = 1;
char *ptr;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
STD_LONG_OPTS,
{"packets", required_argument, 0, 'p'},
{"nohtml", no_argument, 0, 'n'},
@@ -184,7 +184,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "VvhnL46t:c:w:H:p:", long_options, &option_index);
+ c = getopt_long (argc, argv, "VvhnL46t:c:w:H:p:", longopts, &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index 1894b281..5313b977 100644
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
@@ -278,8 +278,8 @@ process_arguments (int argc, char **argv)
int c = 1;
char *user;
struct passwd *pw;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"warning", required_argument, 0, 'w'},
{"critical", required_argument, 0, 'c'},
{"metric", required_argument, 0, 'm'},
@@ -303,7 +303,7 @@ process_arguments (int argc, char **argv)
while (1) {
c = getopt_long (argc, argv, "Vvht:c:w:p:s:u:C:a:z:r:m:P:",
- long_options, &option_index);
+ longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -362,7 +362,7 @@ process_arguments (int argc, char **argv)
if (statopts)
break;
else
- statopts = strdup(optarg);
+ statopts = optarg;
asprintf (&fmt, _("%s%sSTATE = %s"), fmt, (options ? ", " : ""), statopts);
options |= STAT;
break;
@@ -397,7 +397,7 @@ process_arguments (int argc, char **argv)
if (prog)
break;
else
- prog = strdup(optarg);
+ prog = optarg;
asprintf (&fmt, _("%s%scommand name '%s'"), fmt, (options ? ", " : ""),
prog);
options |= PROG;
@@ -406,7 +406,7 @@ process_arguments (int argc, char **argv)
if (args)
break;
else
- args = strdup(optarg);
+ args = optarg;
asprintf (&fmt, _("%s%sargs '%s'"), fmt, (options ? ", " : ""), args);
options |= ARGS;
break;
diff --git a/plugins/check_radius.c b/plugins/check_radius.c
index 714de58c..1e4fff7a 100644
--- a/plugins/check_radius.c
+++ b/plugins/check_radius.c
@@ -21,79 +21,21 @@ const char *revision = "$Revision$";
const char *copyright = "2000-2003";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
-#include "config.h"
#include "common.h"
#include "utils.h"
+#include "netutils.h"
#include <radiusclient.h>
-void
-print_usage (void)
-{
- printf ("\
-Usage: %s -H host -F config_file -u username -p password [-P port]\n\
- [-t timeout] [-r retries] [-e expect]\n", progname);
- printf (_(UT_HLP_VRS), progname, progname);
-}
-
-void
-print_help (void)
-{
- char *myport;
- asprintf (&myport, "%d", PW_AUTH_UDP_PORT);
-
- print_revision (progname, revision);
-
- printf (_("Copyright (c) 1999 Robert August Vincent II\n"));
- printf (_(COPYRIGHT), copyright, email);
-
- printf(_("Tests to see if a radius server is accepting connections.\n\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_(UT_HOST_PORT), 'P', myport);
-
- printf (_("\
- -u, --username=STRING\n\
- The user to authenticate\n\
- -p, --password=STRING\n\
- Password for autentication (SECURITY RISK)\n\
- -F, --filename=STRING\n\
- Configuration file\n\
- -e, --expect=STRING\n\
- Response string to expect from the server\n\
- -r, --retries=INTEGER\n\
- Number of times to retry a failed connection\n"));
-
- printf (_(UT_TIMEOUT), timeout_interval);
-
- printf (_("\n\
-This plugin tests a radius server to see if it is accepting connections.\n\
-\n\
-The server to test must be specified in the invocation, as well as a user\n\
-name and password. A configuration file may also be present. The format of\n\
-the configuration file is described in the radiusclient library sources.\n\n"));
-
- printf (_("\
-The password option presents a substantial security issue because the\n\
-password can be determined by careful watching of the command line in\n\
-a process listing. This risk is exacerbated because nagios will\n\
-run the plugin at regular prdictable intervals. Please be sure that\n\
-the password used does not allow access to sensitive system resources,\n\
-otherwise compormise could occur.\n"));
-
- printf (_(UT_SUPPORT));
-}
-
int process_arguments (int, char **);
+void print_help (void);
+void print_usage (void);
char *server = NULL;
char *username = NULL;
char *password = NULL;
char *expect = NULL;
char *config_file = NULL;
-int port = PW_AUTH_UDP_PORT;
+unsigned short port = PW_AUTH_UDP_PORT;
int retries = 1;
int verbose = FALSE;
ENV *env = NULL;
@@ -159,12 +101,14 @@ main (int argc, char **argv)
SEND_DATA data;
int result;
UINT4 client_id;
+ char *str;
if (process_arguments (argc, argv) == ERROR)
usage (_("Could not parse arguments\n"));
+ str = strdup ("dictionary");
if ((config_file && rc_read_config (config_file)) ||
- rc_read_dictionary (rc_conf_str ("dictionary")))
+ rc_read_dictionary (rc_conf_str (str)))
die (STATE_UNKNOWN, _("Config file error"));
service = PW_AUTHENTICATE_ONLY;
@@ -184,8 +128,8 @@ main (int argc, char **argv)
if (rc_avpair_add (&(data.send_pairs), PW_NAS_IP_ADDRESS, &client_id, 0) ==
NULL) return (ERROR_RC);
- rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, timeout_interval,
- retries);
+ rc_buildreq (&data, PW_ACCESS_REQUEST, server, port, (int)timeout_interval,
+ retries);
result = rc_send_server (&data, msg);
rc_avpair_free (data.send_pairs);
@@ -199,7 +143,7 @@ main (int argc, char **argv)
if (result == BADRESP_RC)
die (STATE_WARNING, _("Auth Failed"));
if (expect && !strstr (msg, expect))
- die (STATE_WARNING, msg);
+ die (STATE_WARNING, "%s", msg);
if (result == OK_RC)
die (STATE_OK, _("Auth OK"));
return (0);
@@ -213,8 +157,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"port", required_argument, 0, 'P'},
{"username", required_argument, 0, 'u'},
@@ -254,8 +198,8 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "+hVvH:P:F:u:p:t:r:e:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "+hVvH:P:F:u:p:t:r:e:", longopts,
+ &option);
if (c == -1 || c == EOF || c == 1)
break;
@@ -316,3 +260,71 @@ process_arguments (int argc, char **argv)
}
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ char *myport;
+ asprintf (&myport, "%d", PW_AUTH_UDP_PORT);
+
+ print_revision (progname, revision);
+
+ printf (_("Copyright (c) 1999 Robert August Vincent II\n"));
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf(_("Tests to see if a radius server is accepting connections.\n\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_(UT_HOST_PORT), 'P', myport);
+
+ printf (_("\
+ -u, --username=STRING\n\
+ The user to authenticate\n\
+ -p, --password=STRING\n\
+ Password for autentication (SECURITY RISK)\n\
+ -F, --filename=STRING\n\
+ Configuration file\n\
+ -e, --expect=STRING\n\
+ Response string to expect from the server\n\
+ -r, --retries=INTEGER\n\
+ Number of times to retry a failed connection\n"));
+
+ printf (_(UT_TIMEOUT), timeout_interval);
+
+ printf (_("\n\
+This plugin tests a radius server to see if it is accepting connections.\n\
+\n\
+The server to test must be specified in the invocation, as well as a user\n\
+name and password. A configuration file may also be present. The format of\n\
+the configuration file is described in the radiusclient library sources.\n\n"));
+
+ printf (_("\
+The password option presents a substantial security issue because the\n\
+password can be determined by careful watching of the command line in\n\
+a process listing. This risk is exacerbated because nagios will\n\
+run the plugin at regular prdictable intervals. Please be sure that\n\
+the password used does not allow access to sensitive system resources,\n\
+otherwise compormise could occur.\n"));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf ("\
+Usage: %s -H host -F config_file -u username -p password [-P port]\n\
+ [-t timeout] [-r retries] [-e expect]\n", progname);
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/check_real.c b/plugins/check_real.c
index 9c9c3e0b..3e8475a7 100644
--- a/plugins/check_real.c
+++ b/plugins/check_real.c
@@ -256,8 +256,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"IPaddress", required_argument, 0, 'I'},
{"expect", required_argument, 0, 'e'},
@@ -285,8 +285,8 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "+hVI:H:e:u:p:w:c:t:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "+hVI:H:e:u:p:w:c:t:", longopts,
+ &option);
if (c == -1 || c == EOF)
break;
@@ -297,15 +297,15 @@ process_arguments (int argc, char **argv)
if (server_address)
break;
else if (is_host (optarg))
- server_address = strdup(optarg);
+ server_address = optarg;
else
usage (_("Invalid host name\n"));
break;
case 'e': /* string to expect in response header */
- server_expect = strdup(optarg);
+ server_expect = optarg;
break;
case 'u': /* server URL */
- server_url = strdup(optarg);
+ server_url = optarg;
break;
case 'p': /* port */
if (is_intpos (optarg)) {
diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c
index c4e427a6..41ed5f38 100644
--- a/plugins/check_smtp.c
+++ b/plugins/check_smtp.c
@@ -183,8 +183,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"expect", required_argument, 0, 'e'},
{"critical", required_argument, 0, 'c'},
@@ -216,7 +216,7 @@ process_arguments (int argc, char **argv)
while (1) {
c = getopt_long (argc, argv, "+hVv46t:p:f:e:c:w:H:C:",
- long_options, &option_index);
+ longopts, &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index e22d8a0b..af8f1198 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -84,7 +84,7 @@ int errcode, excode;
#endif
char *server_address = NULL;
-char *community = DEFAULT_COMMUNITY;
+char *community = NULL;
char *authpriv = NULL;
char *proto = NULL;
char *seclevel = NULL;
@@ -92,17 +92,17 @@ char *secname = NULL;
char *authproto = NULL;
char *authpasswd = NULL;
char *privpasswd = NULL;
-char *oid = "";
-char *label = "SNMP";
-char *units = "";
-char *port = DEFAULT_PORT;
+char *oid;
+char *label;
+char *units;
+char *port;
char string_value[MAX_INPUT_BUFFER] = "";
char **labels = NULL;
char **unitv = NULL;
-int nlabels = 0;
-int labels_size = 8;
-int nunits = 0;
-int unitv_size = 8;
+size_t nlabels = 0;
+size_t labels_size = 8;
+size_t nunits = 0;
+size_t unitv_size = 8;
int verbose = FALSE;
unsigned long lower_warn_lim[MAX_OIDS];
unsigned long upper_warn_lim[MAX_OIDS];
@@ -112,9 +112,9 @@ unsigned long response_value[MAX_OIDS];
int check_warning_value = FALSE;
int check_critical_value = FALSE;
int eval_method[MAX_OIDS];
-char *delimiter = DEFAULT_DELIMITER;
-char *output_delim = DEFAULT_OUTPUT_DELIMITER;
-char *miblist = DEFAULT_MIBLIST;
+char *delimiter;
+char *output_delim;
+char *miblist;
@@ -131,8 +131,8 @@ main (int argc, char **argv)
char input_buffer[MAX_INPUT_BUFFER];
char *command_line = NULL;
char *response = NULL;
- char *outbuff = "";
- char *output = "";
+ char *outbuff;
+ char *output;
char *ptr = NULL;
char *p2 = NULL;
char *show = NULL;
@@ -143,6 +143,16 @@ main (int argc, char **argv)
eval_method[i] = CHECK_UNDEF;
i = 0;
+ oid = strdup ("");
+ label = strdup ("SNMP");
+ units = strdup ("");
+ port = strdup (DEFAULT_PORT);
+ outbuff = strdup ("");
+ output = strdup ("");
+ delimiter = strdup (DEFAULT_DELIMITER);
+ output_delim = strdup (DEFAULT_OUTPUT_DELIMITER);
+ miblist = strdup (DEFAULT_MIBLIST);
+
if (process_arguments (argc, argv) == ERROR)
usage (_("Incorrect arguments supplied\n"));
@@ -287,7 +297,7 @@ main (int argc, char **argv)
result = max_state (result, iresult);
/* Prepend a label for this OID if there is one */
- if (nlabels > 1 && i < nlabels && labels[i] != NULL)
+ if (nlabels > (size_t)1 && (size_t)i < nlabels && labels[i] != NULL)
asprintf (&outbuff, "%s%s%s %s%s%s", outbuff,
(i == 0) ? " " : output_delim,
labels[i], mark (iresult), show, mark (iresult));
@@ -296,7 +306,7 @@ main (int argc, char **argv)
mark (iresult), show, mark (iresult));
/* Append a unit string for this OID if there is one */
- if (nunits > 0 && i < nunits && unitv[i] != NULL)
+ if (nunits > (size_t)0 && (size_t)i < nunits && unitv[i] != NULL)
asprintf (&outbuff, "%s %s", outbuff, unitv[i]);
i++;
@@ -341,8 +351,8 @@ process_arguments (int argc, char **argv)
int c = 1;
int j = 0, jj = 0, ii = 0;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
STD_LONG_OPTS,
{"community", required_argument, 0, 'C'},
{"oid", required_argument, 0, 'o'},
@@ -381,7 +391,7 @@ process_arguments (int argc, char **argv)
while (1) {
c = getopt_long (argc, argv, "hvVt:c:w:H:C:o:e:E:d:D:s:R:r:l:u:p:m:P:L:U:a:A:X:",
- long_options, &option_index);
+ longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -401,34 +411,34 @@ process_arguments (int argc, char **argv)
/* Connection info */
case 'C': /* group or community */
- community = strscpy (community, optarg);
+ community = optarg;
break;
case 'H': /* Host or server */
- server_address = strscpy (server_address, optarg);
+ server_address = optarg;
break;
case 'p': /* TCP port number */
- port = strscpy(port, optarg);
+ port = optarg;
break;
case 'm': /* List of MIBS */
- miblist = strscpy(miblist, optarg);
+ miblist = optarg;
break;
case 'P': /* SNMP protocol version */
- proto = strscpy(proto, optarg);
+ proto = optarg;
break;
case 'L': /* security level */
- seclevel = strscpy(seclevel,optarg);
+ seclevel = optarg;
break;
case 'U': /* security username */
- secname = strscpy(secname, optarg);
+ secname = optarg;
break;
case 'a': /* auth protocol */
- asprintf (&authproto, optarg);
+ authproto = optarg;
break;
case 'A': /* auth passwd */
- authpasswd = strscpy(authpasswd, optarg);
+ authpasswd = optarg;
break;
case 'X': /* priv passwd */
- privpasswd = strscpy(privpasswd, optarg);
+ privpasswd = optarg;
break;
case 't': /* timeout period */
if (!is_integer (optarg))
@@ -585,7 +595,10 @@ process_arguments (int argc, char **argv)
}
if (server_address == NULL)
- asprintf (&server_address, argv[optind]);
+ server_address = argv[optind];
+
+ if (community == NULL)
+ community = strdup (DEFAULT_COMMUNITY);
return validate_arguments ();
}
diff --git a/plugins/check_ssh.c b/plugins/check_ssh.c
index fdded583..26709a7d 100644
--- a/plugins/check_ssh.c
+++ b/plugins/check_ssh.c
@@ -70,8 +70,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"host", required_argument, 0, 'H'},
@@ -91,7 +91,7 @@ process_arguments (int argc, char **argv)
strcpy (argv[c], "-t");
while (1) {
- c = getopt_long (argc, argv, "+Vhv46t:H:p:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+Vhv46t:H:p:", longopts, &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_swap.c b/plugins/check_swap.c
index b92694d9..a4e7e814 100644
--- a/plugins/check_swap.c
+++ b/plugins/check_swap.c
@@ -34,7 +34,7 @@ const char *revision = "$Revision$";
const char *copyright = "2000-2003";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
-int check_swap (int usp, int free_swap);
+int check_swap (int usp, long unsigned int free_swap);
int process_arguments (int argc, char **argv);
int validate_arguments (void);
void print_usage (void);
@@ -51,58 +51,6 @@ int allswaps;
int sun = 0; /* defined by compiler if it is a sun solaris system */
#endif
-void
-print_usage (void)
-{
- printf (_("Usage:\n\
- %s [-a] -w <used_percentage>%% -c <used_percentage>%%\n\
- %s [-a] -w <bytes_free> -c <bytes_free>\n\
- %s (-h | --help) for detailed help\n\
- %s (-V | --version) for version information\n"),
- progname, progname, progname, progname);
-}
-
-
-
-
-
-void
-print_help (void)
-{
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("Check swap space on local server.\n\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_("\n\
- -w, --warning=INTEGER\n\
- Exit with WARNING status if less than INTEGER bytes of swap space are free\n\
- -w, --warning=PERCENT%%\n\
- Exit with WARNING status if less than PERCENT of swap space has been used\n\
- -c, --critical=INTEGER\n\
- Exit with CRITICAL status if less than INTEGER bytes of swap space are free\n\
- -c, --critical=PERCENT%%\n\
- Exit with CRITCAL status if less than PERCENT of swap space has been used\n\
- -a, --allswaps\n\
- Conduct comparisons for all swap partitions, one by one\n"));
-
-#ifdef sun
- printf (_("\n\
-On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\
-Will be discrepencies because swap -s counts allocated swap and includes\n\
-real memory\n"));
-#endif
-
- support ();
-}
-
-
-
int
main (int argc, char **argv)
{
@@ -121,7 +69,9 @@ main (int argc, char **argv)
FILE *fp;
#endif
char str[32];
- char *status = "";
+ char *status;
+
+ status = strdup("");
if (process_arguments (argc, argv) != OK)
usage (_("Invalid command arguments supplied\n"));
@@ -233,16 +183,16 @@ main (int argc, char **argv)
int
-check_swap (int usp, int free_swap)
+check_swap (int usp, long unsigned int free_swap)
{
int result = STATE_UNKNOWN;
if (usp >= 0 && usp >= (100.0 - crit_percent))
result = STATE_CRITICAL;
- else if (crit_size > 0 && (unsigned)free_swap <= crit_size)
+ else if (crit_size > 0 && free_swap <= crit_size)
result = STATE_CRITICAL;
else if (usp >= 0 && usp >= (100.0 - warn_percent))
result = STATE_WARNING;
- else if (warn_size > 0 && (unsigned)free_swap <= warn_size)
+ else if (warn_size > 0 && free_swap <= warn_size)
result = STATE_WARNING;
else if (usp >= 0.0)
result = STATE_OK;
@@ -258,8 +208,8 @@ process_arguments (int argc, char **argv)
int wc = 0; /* warning counter */
int cc = 0; /* critical counter */
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"warning", required_argument, 0, 'w'},
{"critical", required_argument, 0, 'c'},
{"allswaps", no_argument, 0, 'a'},
@@ -273,7 +223,7 @@ process_arguments (int argc, char **argv)
return ERROR;
while (1) {
- c = getopt_long (argc, argv, "+?Vvhac:w:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+?Vvhac:w:", longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -296,7 +246,6 @@ process_arguments (int argc, char **argv)
else {
usage (_("Warning threshold must be integer or percentage!\n"));
}
- wc++;
case 'c': /* critical time threshold */
if (is_intnonneg (optarg)) {
crit_size = atoi (optarg);
@@ -314,7 +263,6 @@ process_arguments (int argc, char **argv)
else {
usage (_("Critical threshold must be integer or percentage!\n"));
}
- cc++;
case 'a': /* all swap */
allswaps = TRUE;
break;
@@ -377,3 +325,57 @@ validate_arguments (void)
}
return OK;
}
+
+
+
+
+
+
+void
+print_help (void)
+{
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("Check swap space on local server.\n\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_("\n\
+ -w, --warning=INTEGER\n\
+ Exit with WARNING status if less than INTEGER bytes of swap space are free\n\
+ -w, --warning=PERCENT%%\n\
+ Exit with WARNING status if less than PERCENT of swap space has been used\n\
+ -c, --critical=INTEGER\n\
+ Exit with CRITICAL status if less than INTEGER bytes of swap space are free\n\
+ -c, --critical=PERCENT%%\n\
+ Exit with CRITCAL status if less than PERCENT of swap space has been used\n\
+ -a, --allswaps\n\
+ Conduct comparisons for all swap partitions, one by one\n"));
+
+#ifdef sun
+ printf (_("\n\
+On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\
+Will be discrepencies because swap -s counts allocated swap and includes\n\
+real memory\n"));
+#endif
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("Usage:\n\
+ %s [-a] -w <used_percentage>%% -c <used_percentage>%%\n\
+ %s [-a] -w <bytes_free> -c <bytes_free>\n\
+ %s (-h | --help) for detailed help\n\
+ %s (-V | --version) for version information\n"),
+ progname, progname, progname, progname);
+}
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index fc0572cc..bf8ed8ca 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -345,8 +345,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"critical-time", required_argument, 0, 'c'},
{"warning-time", required_argument, 0, 'w'},
@@ -391,7 +391,7 @@ process_arguments (int argc, char **argv)
while (1) {
c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:",
- long_options, &option_index);
+ longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
diff --git a/plugins/check_time.c b/plugins/check_time.c
index 36b622fb..49e7c87d 100644
--- a/plugins/check_time.c
+++ b/plugins/check_time.c
@@ -138,8 +138,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"warning-variance", required_argument, 0, 'w'},
{"critical-variance", required_argument, 0, 'c'},
@@ -169,8 +169,8 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "hVH:w:c:W:C:p:t:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "hVH:w:c:W:C:p:t:", longopts,
+ &option);
if (c == -1 || c == EOF)
break;
@@ -307,7 +307,7 @@ This plugin will check the time on the specified host.\n\n"));
printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
- support ();
+ printf (_(UT_SUPPORT));
}
diff --git a/plugins/check_udp.c b/plugins/check_udp.c
index bd5de586..5aaf3a79 100644
--- a/plugins/check_udp.c
+++ b/plugins/check_udp.c
@@ -105,8 +105,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"critical", required_argument, 0, 'c'},
{"warning", required_argument, 0, 'w'},
@@ -133,7 +133,7 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "+hVvH:e:s:c:w:t:p:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+hVvH:e:s:c:w:t:p:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
diff --git a/plugins/check_ups.c b/plugins/check_ups.c
index fcee7477..7e7b36a4 100644
--- a/plugins/check_ups.c
+++ b/plugins/check_ups.c
@@ -400,8 +400,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
{"ups", required_argument, 0, 'u'},
{"port", required_argument, 0, 'p'},
@@ -427,8 +427,8 @@ process_arguments (int argc, char **argv)
}
while (1) {
- c = getopt_long (argc, argv, "hVH:u:p:v:c:w:t:", long_options,
- &option_index);
+ c = getopt_long (argc, argv, "hVH:u:p:v:c:w:t:", longopts,
+ &option);
if (c == -1 || c == EOF)
break;
diff --git a/plugins/check_users.c b/plugins/check_users.c
index 9e182015..9f308bc3 100644
--- a/plugins/check_users.c
+++ b/plugins/check_users.c
@@ -107,8 +107,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"critical", required_argument, 0, 'c'},
{"warning", required_argument, 0, 'w'},
{"version", no_argument, 0, 'V'},
@@ -120,7 +120,7 @@ process_arguments (int argc, char **argv)
usage ("\n");
while (1) {
- c = getopt_long (argc, argv, "+hVvc:w:", long_options, &option_index);
+ c = getopt_long (argc, argv, "+hVvc:w:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
diff --git a/plugins/negate.c b/plugins/negate.c
index 3ef5ee76..c24658af 100644
--- a/plugins/negate.c
+++ b/plugins/negate.c
@@ -14,84 +14,12 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-******************************************************************************/
-
-const char *progname = "negate";
-const char *revision = "$Revision$";
-const char *copyright = "2002-2003";
-const char *email = "nagiosplug-devel@lists.sourceforge.net";
-
-#define DEFAULT_TIMEOUT 9
-
-#include "common.h"
-#include "utils.h"
-#include "popen.h"
-
-void
-print_usage (void)
-{
- printf (_("Usage: %s [-t timeout] <definition of wrapped plugin>\n"),
- progname);
- printf (_(UT_HLP_VRS), progname, progname);
-}
-
-void
-print_help (void)
-{
- print_revision (progname, revision);
-
- printf (_(COPYRIGHT), copyright, email);
-
- printf (_("\
-Negates the status of a plugin (returns OK for CRITICAL, and vice-versa).\n\
-\n"));
-
- print_usage ();
-
- printf (_(UT_HELP_VRSN));
-
- printf (_(UT_TIMEOUT), DEFAULT_TIMEOUT);
-
- printf (_("\
- [keep timeout than the plugin timeout to retain CRITICAL status]\n"));
-
- printf (_("\
- negate \"/usr/local/nagios/libexec/check_ping -H host\"\n\
- Run check_ping and invert result. Must use full path to plugin\n\
- negate \"/usr/local/nagios/libexec/check_procs -a 'vi negate.c'\"\n\
- Use single quotes if you need to retain spaces\n"));
-
- printf (_("\
-This plugin is a wrapper to take the output of another plugin and invert it.\n\
-If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL.\n\
-If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK.\n\
-Otherwise, the output state of the wrapped plugin is unchanged.\n"));
-
- printf (_(UT_SUPPORT));
-}
-
-char *command_line;
-
-int process_arguments (int, char **);
-int validate_arguments (void);
-/******************************************************************************
-
-The (psuedo?)literate programming XML is contained within \@\@\- <XML> \-\@\@
-tags in the comments. With in the tags, the XML is assembled sequentially.
-You can define entities in tags. You also have all the #defines available as
-entities.
-
-Please note that all tags must be lowercase to use the DocBook XML DTD.
-
@@-<article>
<sect1>
<title>Quick Reference</title>
-<!-- The refentry forms a manpage -->
<refentry>
-<refmeta>
-<manvolnum>5<manvolnum>
-</refmeta>
+<refmeta><manvolnum>5<manvolnum></refmeta>
<refnamdiv>
<refname>&progname;</refname>
<refpurpose>&SUMMARY;</refpurpose>
@@ -119,19 +47,33 @@ Please note that all tags must be lowercase to use the DocBook XML DTD.
<itemizedlist>
<listitem>Add option to do regex substitution in output text</listitem>
</itemizedlist>
-</sect2>
-
+</sect2>-@@
-<sect2>
-<title>Functions</title>
--@@
******************************************************************************/
+const char *progname = "negate";
+const char *revision = "$Revision$";
+const char *copyright = "2002-2003";
+const char *email = "nagiosplug-devel@lists.sourceforge.net";
+
+#define DEFAULT_TIMEOUT 9
+
+#include "common.h"
+#include "utils.h"
+#include "popen.h"
+
+char *command_line;
+
+int process_arguments (int, char **);
+int validate_arguments (void);
+void print_help (void);
+void print_usage (void);
+
int
main (int argc, char **argv)
{
int found = 0, result = STATE_UNKNOWN;
- char input_buffer[MAX_INPUT_BUFFER];
+ char *buf;
if (process_arguments (argc, argv) == ERROR)
usage (_("Could not parse arguments\n"));
@@ -151,27 +93,22 @@ main (int argc, char **argv)
printf (_("Could not open stderr for %s\n"), command_line);
}
- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
+ buf = malloc(MAX_INPUT_BUFFER);
+ while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) {
found++;
- if (strchr (input_buffer, '\n')) {
- input_buffer[strcspn (input_buffer, "\n")] = 0;
- printf ("%s\n", input_buffer);
- }
- else {
- printf ("%s\n", input_buffer);
- }
+ printf ("%s", buf);
}
if (!found)
- die (STATE_UNKNOWN,\
- _("%s problem - No data recieved from host\nCMD: %s\n"),\
- argv[0], command_line);
+ die (STATE_UNKNOWN,
+ _("%s problem - No data recieved from host\nCMD: %s\n"),\
+ argv[0], command_line);
/* close the pipe */
result = spclose (child_process);
/* WARNING if output found on stderr */
- if (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr))
+ if (fgets (buf, MAX_INPUT_BUFFER - 1, child_stderr))
result = max_state (result, STATE_WARNING);
/* close stderr */
@@ -189,6 +126,9 @@ main (int argc, char **argv)
/******************************************************************************
@@-
+<sect2>
+<title>Functions</title>
+
<sect3>
<title>process_arguments</title>
@@ -196,7 +136,7 @@ main (int argc, char **argv)
variables.</para>
<para>Aside from the standard 'help' and 'version' options, there
-is a only a 'timeout' option.No validation is currently done.</para>
+is a only a 'timeout' option.</para>
</sect3>
-@@
@@ -208,8 +148,8 @@ process_arguments (int argc, char **argv)
{
int c;
- int option_index = 0;
- static struct option long_options[] = {
+ int option = 0;
+ static struct option longopts[] = {
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"timeout", required_argument, 0, 't'},
@@ -218,7 +158,7 @@ process_arguments (int argc, char **argv)
while (1) {
c = getopt_long (argc, argv, "+hVt:",
- long_options, &option_index);
+ longopts, &option);
if (c == -1 || c == EOF)
break;
@@ -226,16 +166,19 @@ process_arguments (int argc, char **argv)
switch (c) {
case '?': /* help */
usage3 (_("Unknown argument"), optopt);
+ break;
case 'h': /* help */
print_help ();
exit (EXIT_SUCCESS);
+ break;
case 'V': /* version */
print_revision (progname, revision);
exit (EXIT_SUCCESS);
case 't': /* timeout period */
if (!is_integer (optarg))
usage2 (_("Timeout Interval must be an integer"), optarg);
- timeout_interval = atoi (optarg);
+ else
+ timeout_interval = atoi (optarg);
break;
}
}
@@ -267,7 +210,6 @@ validate_arguments ()
return ERROR;
return STATE_OK;
}
-
/******************************************************************************
@@-
@@ -276,3 +218,55 @@ validate_arguments ()
</article>
-@@
******************************************************************************/
+
+
+
+
+
+
+void
+print_help (void)
+{
+ print_revision (progname, revision);
+
+ printf (_(COPYRIGHT), copyright, email);
+
+ printf (_("\
+Negates the status of a plugin (returns OK for CRITICAL, and vice-versa).\n\
+\n"));
+
+ print_usage ();
+
+ printf (_(UT_HELP_VRSN));
+
+ printf (_(UT_TIMEOUT), DEFAULT_TIMEOUT);
+
+ printf (_("\
+ [keep timeout than the plugin timeout to retain CRITICAL status]\n"));
+
+ printf (_("\
+ negate \"/usr/local/nagios/libexec/check_ping -H host\"\n\
+ Run check_ping and invert result. Must use full path to plugin\n\
+ negate \"/usr/local/nagios/libexec/check_procs -a 'vi negate.c'\"\n\
+ Use single quotes if you need to retain spaces\n"));
+
+ printf (_("\
+This plugin is a wrapper to take the output of another plugin and invert it.\n\
+If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL.\n\
+If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK.\n\
+Otherwise, the output state of the wrapped plugin is unchanged.\n"));
+
+ printf (_(UT_SUPPORT));
+}
+
+
+
+
+
+void
+print_usage (void)
+{
+ printf (_("Usage: %s [-t timeout] <definition of wrapped plugin>\n"),
+ progname);
+ printf (_(UT_HLP_VRS), progname, progname);
+}
diff --git a/plugins/popen.c b/plugins/popen.c
index 98ba085b..05fd0ab9 100644
--- a/plugins/popen.c
+++ b/plugins/popen.c
@@ -18,8 +18,7 @@ int spclose(FILE *);
*
******************************************************************************/
-#include <config.h>
-#include <common.h>
+#include "common.h"
/* extern so plugin has pid to kill exec'd process on timeouts */
extern int timeout_interval;
diff --git a/plugins/urlize.c b/plugins/urlize.c
index 12fb3ec9..f4bc67b3 100644
--- a/plugins/urlize.c
+++ b/plugins/urlize.c
@@ -1,41 +1,20 @@
/******************************************************************************
- *
- * urlize.c
- *
- * Program: plugin wrapper for Nagios
- * License: GPL
- * Copyright (c) 2000 Karl DeBisschop (kdebiss@alum.mit.edu)
- *
- * Last Modified: $Date$
- * 2000-06-01 Karl DeBisschop <karl@debisschop.net>
- * Written based of concept in urlize.pl
- *
- * Usage: urlize <url> <plugin> <arg1> ... <argN>
- *
- * Description:
- *
- * This plugin wraps the text output of another command (plugin) in HTML
- * <A> tags, thus displaying the plugin output in as a clickable link in
- * the Nagios status screen. The return status is the same as the plugin
- * invoked by urlize
- *
- * License Information:
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- *****************************************************************************/
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+******************************************************************************/
const char *progname = "urlize";
const char *revision = "$Revision$";
@@ -46,12 +25,101 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "utils.h"
#include "popen.h"
-void
-print_usage (void)
+void print_help (void);
+void print_usage (void);
+
+int
+main (int argc, char **argv)
{
- printf (_("Usage:\n %s <url> <plugin> <arg1> ... <argN>\n"), progname);
+ int found = 0, result = STATE_UNKNOWN;
+ char *url = NULL;
+ char *cmd;
+ char *buf;
+
+ int c;
+ int option = 0;
+ static struct option longopts[] = {
+ {"help", no_argument, 0, 'h'},
+ {"version", no_argument, 0, 'V'},
+ {"url", required_argument, 0, 'u'},
+ {0, 0, 0, 0}
+ };
+
+ while (1) {
+ c = getopt_long (argc, argv, "+hVu:", longopts, &option);
+
+ if (c == -1 || c == EOF)
+ break;
+
+ switch (c) {
+ case 'h': /* help */
+ print_help ();
+ exit (EXIT_SUCCESS);
+ break;
+ case 'V': /* version */
+ print_revision (progname, revision);
+ exit (EXIT_SUCCESS);
+ break;
+ case 'u':
+ url = strdup (argv[optind]);
+ break;
+ case '?':
+ default:
+ usage3 (_("Unknown argument"), optopt);
+ break;
+ }
+ }
+
+ if (url == NULL)
+ url = strdup (argv[optind++]);
+
+ cmd = strdup (argv[optind++]);
+ for (c = optind; c < argc; c++) {
+ asprintf (&cmd, "%s %s", cmd, argv[c]);
+ }
+
+ child_process = spopen (cmd);
+ if (child_process == NULL) {
+ printf (_("Could not open pipe: %s\n"), cmd);
+ exit (STATE_UNKNOWN);
+ }
+
+ child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");
+ if (child_stderr == NULL) {
+ printf (_("Could not open stderr for %s\n"), cmd);
+ }
+
+ buf = malloc(MAX_INPUT_BUFFER);
+ printf ("<A href=\"%s\">", argv[1]);
+ while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) {
+ found++;
+ printf ("%s", buf);
+ }
+
+ if (!found)
+ die (STATE_UNKNOWN,
+ _("%s problem - No data recieved from host\nCMD: %s</A>\n"),
+ argv[0], cmd);
+
+ /* close the pipe */
+ result = spclose (child_process);
+
+ /* WARNING if output found on stderr */
+ if (fgets (buf, MAX_INPUT_BUFFER - 1, child_stderr))
+ result = max_state (result, STATE_WARNING);
+
+ /* close stderr */
+ (void) fclose (child_stderr);
+
+ printf ("</A>\n");
+ return result;
}
+
+
+
+
+
void
print_help (void)
{
@@ -81,80 +149,15 @@ the shell will remove the single quotes and urlize will see:\n\
You probably want:\n\
\n\
urlize http://example.com/ \"check_http -H example.com -r 'two words'\"\n"));
- exit (STATE_OK);
-}
-
-int
-main (int argc, char **argv)
-{
- int i = 0, found = 0, result = STATE_UNKNOWN;
- char *cmd = NULL;
- char input_buffer[MAX_INPUT_BUFFER];
-
- if (argc < 2) {
- print_usage ();
- exit (STATE_UNKNOWN);
- }
-
- if (!strcmp (argv[1], "-h") || !strcmp (argv[1], "--help")) {
- print_help ();
- exit (STATE_OK);
- }
-
- if (!strcmp (argv[1], "-V") || !strcmp (argv[1], "--version")) {
- print_revision (progname, revision);
- exit (STATE_OK);
- }
-
- if (argc < 2) {
- print_usage ();
- exit (STATE_UNKNOWN);
- }
-
- asprintf (&cmd, "%s", argv[2]);
- for (i = 3; i < argc; i++) {
- asprintf (&cmd, "%s %s", cmd, argv[i]);
- }
-
- child_process = spopen (cmd);
- if (child_process == NULL) {
- printf (_("Could not open pipe: %s\n"), cmd);
- exit (STATE_UNKNOWN);
- }
-
- child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");
- if (child_stderr == NULL) {
- printf (_("Could not open stderr for %s\n"), cmd);
- }
-
- printf ("<A href=\"%s\">", argv[1]);
- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
- found++;
- if (index (input_buffer, '\n')) {
- input_buffer[strcspn (input_buffer, "\n")] = 0;
- printf ("%s", input_buffer);
- }
- else {
- printf ("%s", input_buffer);
- }
- }
- if (!found) {
- printf (_("%s problem - No data recieved from host\nCMD: %s</A>\n"), argv[0],
- cmd);
- exit (STATE_UNKNOWN);
- }
+ printf (_(UT_SUPPORT));
+}
- /* close the pipe */
- result = spclose (child_process);
- /* WARNING if output found on stderr */
- if (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr))
- result = max_state (result, STATE_WARNING);
- /* close stderr */
- (void) fclose (child_stderr);
- printf ("</A>\n");
- return result;
+void
+print_usage (void)
+{
+ printf (_("Usage:\n %s <url> <plugin> <arg1> ... <argN>\n"), progname);
}