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
This commit is contained in:
Karl DeBisschop 2003-08-10 06:53:22 +00:00
parent cbf702f51f
commit f4f92be60c
34 changed files with 1204 additions and 1174 deletions

View file

@ -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;

View file

@ -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));
}

View file

@ -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;

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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)
result = STATE_UNKNOWN;
strcpy (errmsg, input_buffer);
} else {
switch (line) {
case 1: /* 1st line should contain the line status */
line_status = atoi (temp_buffer);
else {
result = STATE_UNKNOWN;
strcpy (error_message, input_buffer);
}
break;
case 2: /* 2nd line should contain the paper status */
if (temp_buffer != NULL)
break;
case 2: /* 2nd line should contain the paper status */
paper_status = atoi (temp_buffer);
else {
result = STATE_UNKNOWN;
strcpy (error_message, input_buffer);
}
break;
case 3: /* 3rd line should be intervention required */
if (temp_buffer != NULL)
break;
case 3: /* 3rd line should be intervention required */
intervention_required = atoi (temp_buffer);
else {
result = STATE_UNKNOWN;
strcpy (error_message, input_buffer);
}
break;
case 4: /* 4th line should be peripheral error */
if (temp_buffer != NULL)
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);
}

View file

@ -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);

View file

@ -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);
}

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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);
}

View file

@ -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;

View file

@ -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;

View file

@ -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);
}

View file

@ -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)) {

View file

@ -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;

View file

@ -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 ();
}

View file

@ -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;

View file

@ -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);
}

View file

@ -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;

View file

@ -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));
}

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -14,6 +14,41 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
@@-<article>
<sect1>
<title>Quick Reference</title>
<refentry>
<refmeta><manvolnum>5<manvolnum></refmeta>
<refnamdiv>
<refname>&progname;</refname>
<refpurpose>&SUMMARY;</refpurpose>
</refnamdiv>
</refentry>
</sect1>
<sect1>
<title>FAQ</title>
</sect1>
<sect1>
<title>Theory, Installation, and Operation</title>
<sect2>
<title>General Description</title>
<para>
&DESCRIPTION;
</para>
</sect2>
<sect2>
<title>Future Enhancements</title>
<para>ToDo List</para>
<itemizedlist>
<listitem>Add option to do regex substitution in output text</listitem>
</itemizedlist>
</sect2>-@@
******************************************************************************/
const char *progname = "negate";
@ -27,14 +62,168 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "utils.h"
#include "popen.h"
void
print_usage (void)
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)
{
printf (_("Usage: %s [-t timeout] <definition of wrapped plugin>\n"),
progname);
printf (_(UT_HLP_VRS), progname, progname);
int found = 0, result = STATE_UNKNOWN;
char *buf;
if (process_arguments (argc, argv) == ERROR)
usage (_("Could not parse arguments\n"));
/* Set signal handling and alarm */
if (signal (SIGALRM, timeout_alarm_handler) == SIG_ERR)
die (STATE_UNKNOWN, _("Cannot catch SIGALRM"));
(void) alarm ((unsigned) timeout_interval);
child_process = spopen (command_line);
if (child_process == NULL)
die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), command_line);
child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");
if (child_stderr == NULL) {
printf (_("Could not open stderr for %s\n"), command_line);
}
buf = malloc(MAX_INPUT_BUFFER);
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\n"),\
argv[0], command_line);
/* 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);
if (result == STATE_OK)
exit (STATE_CRITICAL);
else if (result == STATE_CRITICAL)
exit (EXIT_SUCCESS);
else
exit (result);
}
/******************************************************************************
@@-
<sect2>
<title>Functions</title>
<sect3>
<title>process_arguments</title>
<para>This function parses the command line into the needed
variables.</para>
<para>Aside from the standard 'help' and 'version' options, there
is a only a 'timeout' option.</para>
</sect3>
-@@
******************************************************************************/
/* process command-line arguments */
int
process_arguments (int argc, char **argv)
{
int c;
int option = 0;
static struct option longopts[] = {
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"timeout", required_argument, 0, 't'},
{0, 0, 0, 0}
};
while (1) {
c = getopt_long (argc, argv, "+hVt:",
longopts, &option);
if (c == -1 || c == EOF)
break;
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);
else
timeout_interval = atoi (optarg);
break;
}
}
asprintf (&command_line, "%s", argv[optind]);
for (c = optind+1; c < argc; c++) {
asprintf (&command_line, "%s %s", command_line, argv[c]);
}
return validate_arguments ();
}
/******************************************************************************
@@-
<sect3>
<title>validate_arguments</title>
<para>No validation is currently done.</para>
</sect3>
-@@
******************************************************************************/
int
validate_arguments ()
{
if (command_line == NULL)
return ERROR;
return STATE_OK;
}
/******************************************************************************
@@-
</sect2>
</sect1>
</article>
-@@
******************************************************************************/
void
print_help (void)
{
@ -69,210 +258,15 @@ 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>
<refnamdiv>
<refname>&progname;</refname>
<refpurpose>&SUMMARY;</refpurpose>
</refnamdiv>
</refentry>
</sect1>
<sect1>
<title>FAQ</title>
</sect1>
<sect1>
<title>Theory, Installation, and Operation</title>
<sect2>
<title>General Description</title>
<para>
&DESCRIPTION;
</para>
</sect2>
<sect2>
<title>Future Enhancements</title>
<para>ToDo List</para>
<itemizedlist>
<listitem>Add option to do regex substitution in output text</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Functions</title>
-@@
******************************************************************************/
int
main (int argc, char **argv)
void
print_usage (void)
{
int found = 0, result = STATE_UNKNOWN;
char input_buffer[MAX_INPUT_BUFFER];
if (process_arguments (argc, argv) == ERROR)
usage (_("Could not parse arguments\n"));
/* Set signal handling and alarm */
if (signal (SIGALRM, timeout_alarm_handler) == SIG_ERR)
die (STATE_UNKNOWN, _("Cannot catch SIGALRM"));
(void) alarm ((unsigned) timeout_interval);
child_process = spopen (command_line);
if (child_process == NULL)
die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), command_line);
child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");
if (child_stderr == NULL) {
printf (_("Could not open stderr for %s\n"), command_line);
}
while (fgets (input_buffer, 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);
}
}
if (!found)
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))
result = max_state (result, STATE_WARNING);
/* close stderr */
(void) fclose (child_stderr);
if (result == STATE_OK)
exit (STATE_CRITICAL);
else if (result == STATE_CRITICAL)
exit (EXIT_SUCCESS);
else
exit (result);
printf (_("Usage: %s [-t timeout] <definition of wrapped plugin>\n"),
progname);
printf (_(UT_HLP_VRS), progname, progname);
}
/******************************************************************************
@@-
<sect3>
<title>process_arguments</title>
<para>This function parses the command line into the needed
variables.</para>
<para>Aside from the standard 'help' and 'version' options, there
is a only a 'timeout' option.No validation is currently done.</para>
</sect3>
-@@
******************************************************************************/
/* process command-line arguments */
int
process_arguments (int argc, char **argv)
{
int c;
int option_index = 0;
static struct option long_options[] = {
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"timeout", required_argument, 0, 't'},
{0, 0, 0, 0}
};
while (1) {
c = getopt_long (argc, argv, "+hVt:",
long_options, &option_index);
if (c == -1 || c == EOF)
break;
switch (c) {
case '?': /* help */
usage3 (_("Unknown argument"), optopt);
case 'h': /* help */
print_help ();
exit (EXIT_SUCCESS);
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);
break;
}
}
asprintf (&command_line, "%s", argv[optind]);
for (c = optind+1; c < argc; c++) {
asprintf (&command_line, "%s %s", command_line, argv[c]);
}
return validate_arguments ();
}
/******************************************************************************
@@-
<sect3>
<title>validate_arguments</title>
<para>No validation is currently done.</para>
</sect3>
-@@
******************************************************************************/
int
validate_arguments ()
{
if (command_line == NULL)
return ERROR;
return STATE_OK;
}
/******************************************************************************
@@-
</sect2>
</sect1>
</article>
-@@
******************************************************************************/

View file

@ -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;

View file

@ -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);
printf (_(UT_SUPPORT));
}
int
main (int argc, char **argv)
void
print_usage (void)
{
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);
}
/* 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;
printf (_("Usage:\n %s <url> <plugin> <arg1> ... <argN>\n"), progname);
}