diff options
-rw-r--r-- | plugins/check_hpjd.c | 112 | ||||
-rw-r--r-- | plugins/check_http.c | 8 | ||||
-rw-r--r-- | plugins/check_nt.c | 134 |
3 files changed, 117 insertions, 137 deletions
diff --git a/plugins/check_hpjd.c b/plugins/check_hpjd.c index 9d8fae2b..56384657 100644 --- a/plugins/check_hpjd.c +++ b/plugins/check_hpjd.c @@ -1,50 +1,5 @@ /****************************************************************************** * -* CHECK_HPJD.C -* -* Program: HP printer plugin for Nagios -* License: GPL -* Copyright (c) 1999 Ethan Galstad (nagios@nagios.org) -* -* Last Modified: $Date$ -* -* Command line: CHECK_HPJD <ip_address> [community] -* -* Description: -* -* This plugin will attempt to check the status of an HP printer. The -* printer must have a JetDirect card installed and TCP/IP protocol -* stack enabled. This plugin has only been tested on a few printers -* and may not work well on all models of JetDirect cards. Multiple -* port JetDirect devices must have an IP address assigned to each -* port in order to be monitored. -* -* Dependencies: -* -* This plugin used the 'snmpget' command included with the UCD-SNMP -* package. If you don't have the package installed you will need to -* download it from http://ucd-snmp.ucdavis.edu before you can use -* this plugin. -* -* Return Values: -* -* UNKNOWN = The plugin could not read/process the output from the printer -* OK = Printer looks normal -* WARNING = Low toner, paper jam, intervention required, paper out, etc. -* CRITICAL = The printer could not be reached (it's probably turned off) -* -* Acknowledgements: -* -* The idea for the plugin (as well as some code) were taken from Jim -* Trocki's pinter alert script in his "mon" utility, found at -* http://www.kernel.org/software/mon -* -* Notes: -* 'JetDirect' is copyrighted by Hewlett-Packard. -* HP, please don't sue me... :-) -* -* 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 @@ -66,8 +21,26 @@ #include "utils.h" const char *progname = "check_hpjd"; -#define REVISION "$Revision$" -#define COPYRIGHT "2000-2002" +const char *revision = "$Revision$"; +const char *authors = "Nagios Plugin Development Team"; +const char *email = "nagiosplug-devel@lists.sourceforge.net"; +const char *copyright = "2000-2003"; + +const char *summary = "\ +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"; + +const char *option_summary = "-H host [-C community]\n"; + +const char *options = "\ + -H, --hostname=STRING or IPADDRESS\n\ + Check server on the indicated host\n\ + -C, --community=STRING\n\ + The SNMP community name (default=%s)\n\ + -h, --help\n\ + Print detailed help screen\n\ + -V, --version\n\ + Print version information\n\n"; #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" @@ -425,7 +398,7 @@ process_arguments (int argc, char **argv) community = strscpy (community, optarg); break; case 'V': /* version */ - print_revision (progname, REVISION); + print_revision (progname, revision); exit (STATE_OK); case 'h': /* help */ print_help (); @@ -469,60 +442,43 @@ validate_arguments (void) void print_help (void) { - print_revision (progname, REVISION); - printf - ("Copyright (c) 2000 Ethan Galstad/Karl DeBisschop\n\n" - "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_revision (progname, revision); + printf ("Copyright (c) %s %s\n\t<%s>\n\n", copyright, authors, email); + printf (summary); print_usage (); - printf - ("\nOptions:\n" - " -H, --hostname=STRING or IPADDRESS\n" - " Check server on the indicated host\n" - " -C, --community=STRING\n" - " The SNMP community name (default=%s)\n" - " -h, --help\n" - " Print detailed help screen\n" - " -V, --version\n" " Print version information\n\n",DEFAULT_COMMUNITY); + printf ("\nOptions:\n"); + printf (options, DEFAULT_COMMUNITY); support (); } - - - - void print_usage (void) { - printf - ("Usage: %s -H host [-C community]\n" - " %s --help\n" - " %s --version\n", progname, progname, progname); + printf ("\ +Usage:\n\ + %s %s\n\ + %s (-h | --help) for detailed help\n\ + %s (-V | --version) for version information\n", + progname, option_summary, progname, progname); } /* if(argc<2||argc>3){ printf("Incorrect number of arguments supplied\n"); - printf("\n"); print_revision(argv[0],"$Revision$"); printf("Copyright (c) 1999 Ethan Galstad (nagios@nagios.org)\n"); printf("License: GPL\n"); - printf("\n"); printf("Usage: %s <ip_address> [community]\n",argv[0]); - printf("\n"); printf("Note:\n"); printf(" <ip_address> = The IP address of the JetDirect card\n"); printf(" [community] = An optional community string used for SNMP communication\n"); printf(" with the JetDirect card. The default is 'public'.\n"); - printf("\n"); return STATE_UNKNOWN; } - - /* get the IP address of the JetDirect device */ + // get the IP address of the JetDirect device strcpy(address,argv[1]); - - /* get the community name to use for SNMP communication */ + // get the community name to use for SNMP communication if(argc>=3) strcpy(community,argv[2]); else diff --git a/plugins/check_http.c b/plugins/check_http.c index 31d86462..7678084f 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c @@ -1062,8 +1062,10 @@ print_help (void) void print_usage (void) { - printf ("Usage:\n" " %s %s\n" - " %s (-h | --help) for detailed help\n" - " %s (-V | --version) for version information\n", + printf ("\ +Usage:\n\ + %s %s\n\ + %s (-h | --help) for detailed help\n\ + %s (-V | --version) for version information\n", progname, OPTIONS, progname, progname); } diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 1305a333..9652fa6b 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c @@ -70,13 +70,11 @@ void preparelist(char *string); int main(int argc, char **argv){ int result; - int return_code; + int return_code = STATE_UNKNOWN; char *send_buffer=NULL; char recv_buffer[MAX_INPUT_BUFFER]; char *output_message=NULL; - char *temp_buffer=NULL; char *temp_string=NULL; - char *sep_string=NULL; char *description=NULL; double total_disk_space=0; @@ -84,18 +82,15 @@ int main(int argc, char **argv){ double percent_used_space=0; double mem_commitLimit=0; double mem_commitByte=0; - unsigned long current_connections=0; unsigned long utilization; unsigned long uptime; - unsigned long cache_hits; - unsigned long cache_buffers; - unsigned long lru_time; unsigned long age_in_minutes; double counter_value; int offset=0; int updays=0; int uphours=0; int upminutes=0; + asprintf(&req_password,"None"); if(process_arguments(argc,argv)==ERROR) @@ -108,14 +103,16 @@ int main(int argc, char **argv){ alarm(socket_timeout); if (vars_to_check==CHECK_CLIENTVERSION) { - + asprintf(&send_buffer,strcat(req_password,"&1")); result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer)); if(result!=STATE_OK) return result; asprintf(&output_message,recv_buffer); return_code=STATE_OK; + } + else if(vars_to_check==CHECK_CPULOAD){ if (check_value_list==TRUE) { @@ -123,9 +120,12 @@ int main(int argc, char **argv){ /* -l parameters is present with only integers */ return_code=STATE_OK; asprintf(&temp_string,"CPU Load"); - while (lvalue_list[0+offset]>0 && lvalue_list[0+offset]<=17280 && - lvalue_list[1+offset]>=0 && lvalue_list[1+offset]<=100 && - lvalue_list[2+offset]>=0 && lvalue_list[2+offset]<=100) { + while (lvalue_list[0+offset]>(unsigned long)0 && + lvalue_list[0+offset]<=(unsigned long)17280 && + lvalue_list[1+offset]>=(unsigned long)0 && + lvalue_list[1+offset]<=(unsigned long)100 && + lvalue_list[2+offset]>=(unsigned long)0 && + lvalue_list[2+offset]<=(unsigned long)100) { /* loop until one of the parameters is wrong or not present */ /* Send request and retrieve data */ @@ -514,51 +514,73 @@ void print_usage(void) void print_help(void) { print_revision(progname,"$Revision$"); - printf - ("Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n\n" - "This plugin attempts to contact the NSClient service running on a Windows NT/2000/XP server to\n" - "gather the requested system information.\n\n"); + printf ("\ +Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n\n\ +This plugin collects data from the NSClient service running on a\n\ +Windows NT/2000/XP server.\n\n"); print_usage(); - printf - ("\nOptions:\n" - "-H, --hostname=HOST\n" - " Name of the host to check\n" - "-p, --port=INTEGER\n" - " Optional port number (default: %d)\n" - "-s <password>\n" - " Password needed for the request\n" - "-v, --variable=STRING\n" - " Variable to check. Valid variables are:\n" - " CLIENTVERSION = Get the NSClient version\n" - " CPULOAD = Average CPU load on last x minutes. Request a -l parameter with the following syntax:\n" - " -l <minutes range>,<warning threshold>,<critical threshold>. <minute range> should be less than 24*60.\n" - " Thresholds are percentage and up to 10 requests can be done in one shot. ie: -l 60,90,95,120,90,95\n" - " UPTIME = Get the uptime of the machine. No specific parameters. No warning or critical threshold\n" - " USEDDISKSPACE = Size and percentage of disk use. Request a -l parameter containing the drive letter only.\n" - " Warning and critical thresholds can be specified with -w and -c.\n" - " MEMUSE = Memory use. Warning and critical thresholds can be specified with -w and -c.\n" - " SERVICESTATE = Check the state of one or several services. Request a -l parameters with the following syntax:\n" - " -l <service1>,<service2>,<service3>,... You can specify -d SHOWALL in case you want to see working services\n" - " in the returned string.\n" - " PROCSTATE = Check if one or several process are running. Same syntax as SERVICESTATE.\n" - " COUNTER = Check any performance counter of Windows NT/2000. Request a -l parameters with the following syntax:\n" - " -l \"\\\\<performance object>\\\\counter\",\"<description>\" The <description> parameter is optional and \n" - " is given to a printf output command which require a float parameters. Some examples:\n" - " \"Paging file usage is %%.2f %%%%\" or \"%%.f %%%% paging file used.\"\n" - " -w, --warning=INTEGER\n" - " Threshold which will result in a warning status\n" - " -c, --critical=INTEGER\n" - " Threshold which will result in a critical status\n" - " -t, --timeout=INTEGER\n" - " Seconds before connection attempt times out (default: %d)\n" - "-h, --help\n" - " Print this help screen\n" - "-V, --version\n" - " Print version information\n\n" - "Notes:\n" - " - The NSClient service should be running on the server to get any information\n" - " (http://nsclient.ready2run.nl).\n" - " - Critical thresholds should be lower than warning thresholds\n", PORT, DEFAULT_SOCKET_TIMEOUT); + printf ("\nOptions:\n\ +-H, --hostname=HOST\n\ + Name of the host to check\n\ +-p, --port=INTEGER\n\ + Optional port number (default: %d)\n\ +-s <password>\n\ + Password needed for the request\n\ +-w, --warning=INTEGER\n\ + Threshold which will result in a warning status\n\ +-c, --critical=INTEGER\n\ + Threshold which will result in a critical status\n\ +-t, --timeout=INTEGER\n\ + Seconds before connection attempt times out (default: %d)\n\ +-h, --help\n\ + Print this help screen\n\ +-V, --version\n\ + Print version information\n", + PORT, DEFAULT_SOCKET_TIMEOUT); + printf ("\ +-v, --variable=STRING\n\ + Variable to check. Valid variables are:\n"); + printf ("\ + CLIENTVERSION = Get the NSClient version\n"); + printf ("\ + CPULOAD = Average CPU load on last x minutes.\n\ + Request a -l parameter with the following syntax:\n\ + -l <minutes range>,<warning threshold>,<critical threshold>.\n\ + <minute range> should be less than 24*60.\n\ + Thresholds are percentage and up to 10 requests can be done in one shot.\n\ + ie: -l 60,90,95,120,90,95\n"); + printf ("\ + UPTIME = Get the uptime of the machine.\n\ + No specific parameters. No warning or critical threshold\n"); + printf ("\ + USEDDISKSPACE = Size and percentage of disk use.\n\ + Request a -l parameter containing the drive letter only.\n\ + Warning and critical thresholds can be specified with -w and -c.\n"); + printf ("\ + MEMUSE = Memory use.\n\ + Warning and critical thresholds can be specified with -w and -c.\n"); + printf ("\ + SERVICESTATE = Check the state of one or several services.\n\ + Request a -l parameters with the following syntax:\n\ + -l <service1>,<service2>,<service3>,...\n\ + You can specify -d SHOWALL in case you want to see working services\n\ + in the returned string.\n"); + printf ("\ + PROCSTATE = Check if one or several process are running.\n\ + Same syntax as SERVICESTATE.\n"); + printf ("\ + COUNTER = Check any performance counter of Windows NT/2000.\n\ + Request a -l parameters with the following syntax:\n\ + -l \"\\\\<performance object>\\\\counter\",\"<description>\n\ + The <description> parameter is optional and \n\ + is given to a printf output command which require a float parameters.\n\ + Some examples:\n\ + \"Paging file usage is %%.2f %%%%\"\n\ + \"%%.f %%%% paging file used.\"\n"); + printf ("Notes:\n\ + - The NSClient service should be running on the server to get any information\n\ + (http://nsclient.ready2run.nl).\n\ + - Critical thresholds should be lower than warning thresholds\n"); } int strtolarray(unsigned long *array, char *string, char *delim) { @@ -584,7 +606,7 @@ void preparelist(char *string) { /* Replace all , with & which is the delimiter for the request */ int i; - for (i = 0; i < strlen(string); i++) + for (i = 0; (size_t)i < strlen(string); i++) if (string[i] == ',') { string[i]='&'; } |