X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Fcheck_nt.c;h=e90cd578a56a43cb019a484c636d3e9d9ee3fa5d;hb=0c2be6a608135d8a45c82a1c0ada5e8020bc2409;hp=84b78bc5060a961fce56cabe4cd3abc42d3c8a82;hpb=d19edd4043c498626fe68308005947975ef0a697;p=nagiosplug.git diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 84b78bc..e90cd57 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c @@ -30,6 +30,11 @@ * *****************************************************************************/ +const char *progname = "check_nt"; +const char *revision = "$Revision$"; +const char *copyright = "2003-2006"; +const char *email = "nagiosplug-devel@lists.sourceforge.net"; + #include "common.h" #include "netutils.h" #include "utils.h" @@ -65,8 +70,6 @@ int check_critical_value=FALSE; enum checkvars vars_to_check = CHECK_NONE; int show_all=FALSE; -const char *progname = "check_nt"; - char recv_buffer[MAX_INPUT_BUFFER]; void fetch_data (const char* address, int port, const char* sendb); @@ -77,6 +80,9 @@ void print_help(void); void print_usage(void); int main(int argc, char **argv){ + +/* should be int result = STATE_UNKNOWN; */ + int return_code = STATE_UNKNOWN; char *send_buffer=NULL; char *output_message=NULL; @@ -97,7 +103,7 @@ int main(int argc, char **argv){ unsigned long utilization; unsigned long uptime; unsigned long age_in_minutes; - double counter_value; + double counter_value = 0.0; int offset=0; int updays=0; int uphours=0; @@ -110,8 +116,8 @@ int main(int argc, char **argv){ bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); - if(process_arguments(argc,argv)==ERROR) - usage(_("check_nt: could not parse arguments\n")); + if(process_arguments(argc,argv) == ERROR) + usage4 (_("Could not parse arguments")); /* initialize alarm signal handling */ signal(SIGALRM,socket_timeout_alarm_handler); @@ -349,14 +355,18 @@ int main(int argc, char **argv){ if (allRight) { /* Let's format the output string, finally... */ - - asprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit); - output_message = strcat (output_message, "|"); - output_message = strcat (output_message, - fperfdata (description, counter_value, counter_unit, - 1, warning_value, 1, critical_value, - (!(isPercent) && (minval != NULL)), fminval, - (!(isPercent) && (minval != NULL)), fmaxval)); + if (strstr(description, "%") == NULL) { + asprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit); + } else { + /* has formatting, will segv if wrong */ + asprintf (&output_message, description, counter_value); + } + asprintf (&output_message, "%s |", output_message); + asprintf (&output_message,"%s %s", output_message, + fperfdata (description, counter_value, + counter_unit, 1, warning_value, 1, critical_value, + (!(isPercent) && (minval != NULL)), fminval, + (!(isPercent) && (minval != NULL)), fmaxval)); } } @@ -412,7 +422,7 @@ int main(int argc, char **argv){ case CHECK_NONE: default: - usage (_("Please specify a variable to check")); + usage4 (_("Please specify a variable to check")); break; } @@ -476,14 +486,12 @@ int process_arguments(int argc, char **argv){ switch (c) { case '?': /* print short usage statement if args not parsable */ - printf("%s: Unknown argument: %s\n\n",progname,optarg); - print_usage(); - exit(STATE_UNKNOWN); + usage2 (_("Unknown argument"), optarg); case 'h': /* help */ print_help(); exit(STATE_OK); case 'V': /* version */ - print_revision(progname,"$Revision$"); + print_revision(progname,revision); exit(STATE_OK); case 'H': /* hostname */ if (server_address) free(server_address); @@ -496,7 +504,7 @@ int process_arguments(int argc, char **argv){ if (is_intnonneg(optarg)) server_port=atoi(optarg); else - die(STATE_UNKNOWN,_("Server port an integer (seconds)\nType '%s -h' for additional help\n"),progname); + die(STATE_UNKNOWN,_("Server port must be an integer\n")); break; case 'v': if(strlen(optarg)<4) @@ -562,7 +570,7 @@ void fetch_data (const char *address, int port, const char *sendb) { result=process_tcp_request(address, port, sendb, recv_buffer,sizeof(recv_buffer)); if(result!=STATE_OK) - die (result, "could not fetch information from server\n"); + die (result, _("could not fetch information from server\n")); if (!strncmp(recv_buffer,"ERROR",5)) die (STATE_UNKNOWN, "NSClient - %s\n",recv_buffer); @@ -601,12 +609,20 @@ void preparelist(char *string) { void print_help(void) { - print_revision(progname,"$Revision$"); - 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_revision(progname,revision); + + printf ("Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n"); + printf (COPYRIGHT, copyright, email); + + printf ("%s\n", _("This plugin collects data from the NSClient service running on a")); + printf ("%s\n", _("Windows NT/2000/XP/2003 server.")); + + printf ("\n\n"); + print_usage(); + + printf (_(UT_HELP_VRSN)); + printf (_("\nOptions:\n\ -H, --hostname=HOST\n\ Name of the host to check\n\ @@ -623,8 +639,8 @@ Windows NT/2000/XP server.\n\n")); -h, --help\n\ Print this help screen\n\ -V, --version\n\ - Print version information\n"), - PORT, DEFAULT_SOCKET_TIMEOUT); + Print version information\n"), PORT, DEFAULT_SOCKET_TIMEOUT); + printf (_("\ -v, --variable=STRING\n\ Variable to check. Valid variables are:\n")); @@ -662,22 +678,26 @@ Windows NT/2000/XP server.\n\n")); Request a -l parameters with the following syntax:\n\ -l \"\\\\\\\\counter\",\"\n\ The parameter is optional and \n\ - is given to a printf output command which require a float parameters.\n\ + is given to a printf output command which requires a float parameter.\n\ + If does not include \"%%\", it is used as a label.\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")); + - Critical thresholds should be lower than warning thresholds\n\ + - Default port 1248 is sometimes in use by other services. The error \n\ + output when this happens contains \"Cannot map xxxxx to protocol number\". \n\ + One fix for this is to change the port to something else on check_nt \n\ + and on the client service it\'s connecting to. \n")); } void print_usage(void) { - printf(_("\ -Usage: %s -H host -v variable [-p port] [-w warning] [-c critical]\n\ - [-l params] [-d SHOWALL] [-t timeout]\n"), progname); - printf (_(UT_HLP_VRS), progname, progname); + printf (_("Usage:")); + printf ("%s -H host -v variable [-p port] [-w warning] [-c critical]",progname); + printf ("[-l params] [-d SHOWALL] [-t timeout]\n"); }