Code

Catch no responses from any server (1538341 - nmdias)
[nagiosplug.git] / plugins / check_nt.c
index e52b5a211d6437c5c91757c0427ebf75412eca40..e90cd578a56a43cb019a484c636d3e9d9ee3fa5d 100644 (file)
@@ -32,7 +32,7 @@
 
 const char *progname = "check_nt";
 const char *revision = "$Revision$";
-const char *copyright = "2003-2004";
+const char *copyright = "2003-2006";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -103,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;
@@ -355,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));
                        }
                }
 
@@ -418,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;
 
        }
@@ -482,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);
@@ -502,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)
@@ -568,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);
@@ -609,14 +611,18 @@ void print_help(void)
 {
        print_revision(progname,revision);
        
-       printf (_("Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n"));
+       printf ("Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n");
        printf (COPYRIGHT, copyright, email);
        
-       printf (_("This plugin collects data from the NSClient service running on a\n\
-Windows NT/2000/XP/2003 server.\n\n"));
+       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\
@@ -672,21 +678,26 @@ Windows NT/2000/XP/2003 server.\n\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\
+     is given to a printf output command which requires a float parameter.\n\
+     If <description> 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 (_("Usage:"));
+       printf ("%s -H host -v variable [-p port] [-w warning] [-c critical]",progname);
+  printf ("[-l params] [-d SHOWALL] [-t timeout]\n");
 }