X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_hpjd.c;h=e4e8e6e514c071ddc65c6974e9115de52f0d2e33;hb=25d1ee331dbe4977a4a1a756c67f32bd51d9b070;hp=af6044a0e26e661fcbaafbad29c683d7a40d7802;hpb=d19edd4043c498626fe68308005947975ef0a697;p=nagiosplug.git diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c index af6044a..e4e8e6e 100644 --- a/plugins/check_hpjd.c +++ b/plugins/check_hpjd.c @@ -1,22 +1,38 @@ -/****************************************************************************** -* -* This program is free software; you can redistribute it and/or modify +/***************************************************************************** +* +* Nagios check_hpjd plugin +* +* License: GPL +* Copyright (c) 2000-2007 Nagios Plugins Development Team +* +* Description: +* +* This file contains the check_hpjd plugin +* +* This plugin tests the STATUS of an HP printer with a JetDirect card. +* Net-SNMP must be installed on the computer running the plugin. +* +* +* 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 +* the Free Software Foundation, either version 3 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$ +* along with this program. If not, see . +* +* *****************************************************************************/ +const char *progname = "check_hpjd"; +const char *copyright = "2000-2007"; +const char *email = "nagiosplug-devel@lists.sourceforge.net"; + #include "common.h" #include "popen.h" #include "utils.h" @@ -24,10 +40,6 @@ #define DEFAULT_COMMUNITY "public" -const char *progname = "check_hpjd"; -const char *revision = "$Revision$"; -const char *copyright = "2000-2003"; -const char *email = "nagiosplug-devel@lists.sourceforge.net"; const char *option_summary = "-H host [-C community]\n"; @@ -35,8 +47,8 @@ const char *option_summary = "-H host [-C community]\n"; #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" #define HPJD_GD_PERIPHERAL_ERROR ".1.3.6.1.4.1.11.2.3.9.1.1.2.6" -#define HPJD_GD_PAPER_JAM ".1.3.6.1.4.1.11.2.3.9.1.1.2.8" -#define HPJD_GD_PAPER_OUT ".1.3.6.1.4.1.11.2.3.9.1.1.2.9" +#define HPJD_GD_PAPER_OUT ".1.3.6.1.4.1.11.2.3.9.1.1.2.8" +#define HPJD_GD_PAPER_JAM ".1.3.6.1.4.1.11.2.3.9.1.1.2.9" #define HPJD_GD_TONER_LOW ".1.3.6.1.4.1.11.2.3.9.1.1.2.10" #define HPJD_GD_PAGE_PUNT ".1.3.6.1.4.1.11.2.3.9.1.1.2.11" #define HPJD_GD_MEMORY_OUT ".1.3.6.1.4.1.11.2.3.9.1.1.2.12" @@ -59,7 +71,7 @@ int main (int argc, char **argv) { char command_line[1024]; - int result; + int result = STATE_UNKNOWN; int line; char input_buffer[MAX_INPUT_BUFFER]; char query_string[512]; @@ -84,8 +96,11 @@ main (int argc, char **argv) bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - if (process_arguments (argc, argv) != OK) - usage (_("check_hpjd: could not parse arguments\n")); + /* Parse extra opts if any */ + argv=np_extra_opts (&argc, argv, progname); + + if (process_arguments (argc, argv) == ERROR) + usage4 (_("Could not parse arguments")); /* removed ' 2>1' at end of command 10/27/1999 - EG */ /* create the query string */ @@ -104,7 +119,7 @@ main (int argc, char **argv) HPJD_GD_DOOR_OPEN, HPJD_GD_PAPER_OUTPUT, HPJD_GD_STATUS_DISPLAY); /* get the command to run */ - sprintf (command_line, "%s -OQa -m : -v 1 -c %s %s %s", PATH_TO_SNMPGET, community, + sprintf (command_line, "%s -OQa -m : -v 1 -c %s %s %s", PATH_TO_SNMPGET, community, address, query_string); /* run the command */ @@ -133,7 +148,7 @@ main (int argc, char **argv) temp_buffer = strtok (input_buffer, "="); temp_buffer = strtok (NULL, "="); - if (temp_buffer == NULL) { + if (temp_buffer == NULL && line < 13) { result = STATE_UNKNOWN; strcpy (errmsg, input_buffer); @@ -178,8 +193,9 @@ main (int argc, char **argv) case 12: /* display panel message */ strcpy (display_message, temp_buffer + 1); break; - default: - break; + default: /* fold multiline message */ + strncat (display_message, input_buffer, + sizeof (display_message) - strlen (display_message) - 1); } } @@ -198,7 +214,7 @@ main (int argc, char **argv) sprintf (errmsg, "%s", input_buffer ); } - + /* close stderr */ (void) fclose (child_stderr); @@ -212,7 +228,7 @@ main (int argc, char **argv) /* might not be the problem, but most likely is. */ result = STATE_UNKNOWN ; asprintf (&errmsg, "%s : Timeout from host %s\n", errmsg, address ); - + } /* if we had no read errors, check the printer status results... */ @@ -285,7 +301,6 @@ main (int argc, char **argv) } - /* process command-line arguments */ int process_arguments (int argc, char **argv) @@ -307,7 +322,7 @@ process_arguments (int argc, char **argv) if (argc < 2) return ERROR; - + while (1) { c = getopt_long (argc, argv, "+hVH:C:", longopts, &option); @@ -327,15 +342,13 @@ process_arguments (int argc, char **argv) community = strscpy (community, optarg); break; case 'V': /* version */ - print_revision (progname, revision); + print_revision (progname, NP_VERSION); exit (STATE_OK); case 'h': /* help */ print_help (); exit (STATE_OK); case '?': /* help */ - printf (_("%s: Unknown argument: %s\n\n"), progname, optarg); - print_usage (); - exit (STATE_UNKNOWN); + usage5 (); } } @@ -348,7 +361,7 @@ process_arguments (int argc, char **argv) usage2 (_("Invalid hostname/address"), argv[c]); } } - + if (community == NULL) { if (argv[c] != NULL ) community = argv[c]; @@ -360,7 +373,6 @@ process_arguments (int argc, char **argv) } - int validate_arguments (void) { @@ -368,28 +380,36 @@ validate_arguments (void) } - void print_help (void) { - print_revision (progname, revision); + print_revision (progname, NP_VERSION); printf ("Copyright (c) 1999 Ethan Galstad \n"); 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")); + printf ("%s\n", _("This plugin tests the STATUS of an HP printer with a JetDirect card.")); + printf ("%s\n", _("Net-snmp must be installed on the computer running the plugin.")); + + printf ("\n\n"); print_usage (); - printf (_(UT_HELP_VRSN)); + printf (UT_HELP_VRSN); + printf (UT_EXTRA_OPTS); + + printf (" %s\n", "-C, --community=STRING"); + printf (" %s", _("The SNMP community name ")); + printf (_("(default=%s)"), DEFAULT_COMMUNITY); + printf ("\n"); - printf (_("\ - -C, --community=STRING\n\ - The SNMP community name (default=%s)\n"), DEFAULT_COMMUNITY); +#ifdef NP_EXTRA_OPTS + printf ("\n"); + printf ("%s\n", _("Notes:")); + printf (UT_EXTRA_OPTS_NOTES); +#endif - printf (_(UT_SUPPORT)); + printf (UT_SUPPORT); } @@ -397,7 +417,6 @@ Net-snmp must be installed on the computer running the plugin.\n\n")); void print_usage (void) { - printf (_("\ -Usage: %s -H host [-C community]\n"), progname); - printf (_(UT_HLP_VRS), progname, progname); + printf (_("Usage:")); + printf ("%s -H host [-C community]\n", progname); }