Code

remove UT_HLP_VRS from print_usage
[nagiosplug.git] / plugins / check_nwstat.c
index 94f0543b2c89f92632bed5a43f6de42334179f55..b791640f5e1d849efb5a7949586fd69699ed0140 100644 (file)
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
+ $Id$
 ******************************************************************************/
 
 const char *progname = "check_nwstat";
 const char *revision = "$Revision$";
-const char *copyright = "2000-2003";
+const char *copyright = "2000-2004";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -75,12 +77,15 @@ enum checkvar vars_to_check = NONE;
 int sap_number=-1;
 
 int process_arguments(int, char **);
-void print_usage(void);
 void print_help(void);
+void print_usage(void);
+
+
 
 int
 main(int argc, char **argv) {
-       int result;
+       int result = STATE_UNKNOWN;
+       int sd;
        char *send_buffer=NULL;
        char recv_buffer[MAX_INPUT_BUFFER];
        char *output_message=NULL;
@@ -112,29 +117,36 @@ main(int argc, char **argv) {
        unsigned long sap_entries=0;
        char uptime[MAX_INPUT_BUFFER];
 
-       if (process_arguments(argc,argv)==ERROR)
-               usage(_("Could not parse arguments\n"));
+       setlocale (LC_ALL, "");
+       bindtextdomain (PACKAGE, LOCALEDIR);
+       textdomain (PACKAGE);
+
+       if (process_arguments(argc,argv) != TRUE)
+               usage4 (_("Could not parse arguments"));
 
        /* initialize alarm signal handling */
        signal(SIGALRM,socket_timeout_alarm_handler);
 
        /* set socket timeout */
        alarm(socket_timeout);
-       
+
+       /* open connection */
+       my_tcp_connect (server_address, server_port, &sd);
+
        /* get OS version string */
        if (check_netware_version==TRUE) {
                send_buffer = strdup ("S19\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                if (!strcmp(recv_buffer,"-1\n"))
-                       asprintf (&netware_version, "%s", "");
+                       netware_version = strdup("");
                else {
                        recv_buffer[strlen(recv_buffer)-1]=0;
                        asprintf (&netware_version,_("NetWare %s: "),recv_buffer);
                }
        } else
-               asprintf (&netware_version, "%s", "");
+               netware_version = strdup("");
 
 
        /* check CPU load */
@@ -153,12 +165,12 @@ main(int argc, char **argv) {
                }
 
                asprintf (&send_buffer,"UTIL%s\r\n",temp_buffer);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                utilization=strtoul(recv_buffer,NULL,10);
                send_buffer = strdup ("UPTIME\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                recv_buffer[strlen(recv_buffer)-1]=0;
@@ -180,7 +192,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==CONNS) {
 
                send_buffer = strdup ("CONNECT\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                current_connections=strtoul(recv_buffer,NULL,10);
@@ -199,7 +211,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==LTCH) {
 
                send_buffer = strdup ("S1\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                cache_hits=atoi(recv_buffer);
@@ -218,7 +230,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==CBUFF) {
 
                send_buffer = strdup ("S2\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                cache_buffers=strtoul(recv_buffer,NULL,10);
@@ -237,7 +249,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==CDBUFF) {
 
                send_buffer = strdup ("S3\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                cache_buffers=strtoul(recv_buffer,NULL,10);
@@ -256,7 +268,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==LRUM) {
 
                send_buffer = strdup ("S5\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                lru_time=strtoul(recv_buffer,NULL,10);
@@ -276,12 +288,12 @@ main(int argc, char **argv) {
        } else if (vars_to_check==VKF) {
 
                asprintf (&send_buffer,"VKF%s\r\n",volume_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                if (!strcmp(recv_buffer,"-1\n")) {
-                       asprintf (&output_message,_("Error: Volume '%s' does not exist!"),volume_name);
+                       asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
                        result=STATE_CRITICAL;
                }       else {
                        free_disk_space=strtoul(recv_buffer,NULL,10);
@@ -300,13 +312,13 @@ main(int argc, char **argv) {
        } else if (vars_to_check==VPF) {
 
                asprintf (&send_buffer,"VKF%s\r\n",volume_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                if (!strcmp(recv_buffer,"-1\n")) {
 
-                       asprintf (&output_message,_("Error: Volume '%s' does not exist!"),volume_name);
+                       asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
                        result=STATE_CRITICAL;
 
                } else {
@@ -314,7 +326,7 @@ main(int argc, char **argv) {
                        free_disk_space=strtoul(recv_buffer,NULL,10);
 
                        asprintf (&send_buffer,"VKS%s\r\n",volume_name);
-                       result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+                       result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                        if (result!=STATE_OK)
                                return result;
                        total_disk_space=strtoul(recv_buffer,NULL,10);
@@ -333,7 +345,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==DSDB) {
 
                send_buffer = strdup ("S11\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                if (atoi(recv_buffer)==1)
@@ -342,7 +354,7 @@ main(int argc, char **argv) {
                        result=STATE_WARNING;
  
                send_buffer = strdup ("S13\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                temp_buffer=strtok(recv_buffer,"\r\n");
  
                asprintf (&output_message,_("Directory Services Database is %s (DS version %s)"),(result==STATE_OK)?"open":"closed",temp_buffer);
@@ -351,7 +363,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==LOGINS) {
 
                send_buffer = strdup ("S12\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                if (atoi(recv_buffer)==1)
@@ -365,14 +377,14 @@ main(int argc, char **argv) {
        } else if (vars_to_check==UPRB || vars_to_check==PUPRB) {
  
                asprintf (&send_buffer,"S15\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                used_packet_receive_buffers=atoi(recv_buffer);
 
                asprintf (&send_buffer,"S16\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
@@ -401,7 +413,7 @@ main(int argc, char **argv) {
                        asprintf (&send_buffer,"S9\r\n");
                else
                        asprintf (&send_buffer,"S9.%d\r\n",sap_number);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
  
@@ -421,12 +433,12 @@ main(int argc, char **argv) {
        } else if (vars_to_check==VKP) {
 
                asprintf (&send_buffer,"VKP%s\r\n",volume_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                if (!strcmp(recv_buffer,"-1\n")) {
-                       asprintf (&output_message,_("Error: Volume '%s' does not exist!"),volume_name);
+                       asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
                        result=STATE_CRITICAL;
                } else {
                        purgeable_disk_space=strtoul(recv_buffer,NULL,10);
@@ -441,13 +453,13 @@ main(int argc, char **argv) {
        } else if (vars_to_check==VPP) {
 
                asprintf (&send_buffer,"VKP%s\r\n",volume_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                if (!strcmp(recv_buffer,"-1\n")) {
 
-                       asprintf (&output_message,_("Error: Volume '%s' does not exist!"),volume_name);
+                       asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
                        result=STATE_CRITICAL;
 
                } else {
@@ -455,7 +467,7 @@ main(int argc, char **argv) {
                        purgeable_disk_space=strtoul(recv_buffer,NULL,10);
 
                        asprintf (&send_buffer,"VKS%s\r\n",volume_name);
-                       result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+                       result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                        if (result!=STATE_OK)
                                return result;
                        total_disk_space=strtoul(recv_buffer,NULL,10);
@@ -474,12 +486,12 @@ main(int argc, char **argv) {
        } else if (vars_to_check==VKNP) {
 
                asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                if (!strcmp(recv_buffer,"-1\n")) {
-                       asprintf (&output_message,_("Error: Volume '%s' does not exist!"),volume_name);
+                       asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
                        result=STATE_CRITICAL;
                } else {
                        non_purgeable_disk_space=strtoul(recv_buffer,NULL,10);
@@ -494,13 +506,13 @@ main(int argc, char **argv) {
        } else if (vars_to_check==VPNP) {
 
                asprintf (&send_buffer,"VKNP%s\r\n",volume_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
                if (!strcmp(recv_buffer,"-1\n")) {
 
-                       asprintf (&output_message,_("Error: Volume '%s' does not exist!"),volume_name);
+                       asprintf (&output_message,_("CRITICAL - Volume '%s' does not exist!"),volume_name);
                        result=STATE_CRITICAL;
 
                } else {
@@ -508,7 +520,7 @@ main(int argc, char **argv) {
                        non_purgeable_disk_space=strtoul(recv_buffer,NULL,10);
 
                        asprintf (&send_buffer,"VKS%s\r\n",volume_name);
-                       result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+                       result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                        if (result!=STATE_OK)
                                return result;
                        total_disk_space=strtoul(recv_buffer,NULL,10);
@@ -527,7 +539,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==OFILES) {
 
                asprintf (&send_buffer,"S18\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
  
@@ -544,7 +556,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==ABENDS) {
 
                asprintf (&send_buffer,"S17\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
  
@@ -561,14 +573,14 @@ main(int argc, char **argv) {
        } else if (vars_to_check==CSPROCS) {
 
                asprintf (&send_buffer,"S20\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
  
                max_service_processes=atoi(recv_buffer);
  
                asprintf (&send_buffer,"S21\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
  
@@ -588,7 +600,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==TSYNC) {
 
                asprintf (&send_buffer,"S22\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
@@ -596,17 +608,17 @@ main(int argc, char **argv) {
 
                if (time_sync_status==0) {
                        result=STATE_CRITICAL;
-                       asprintf (&output_message,_("Critical: Time not in sync with network!"));
+                       asprintf (&output_message,_("CRITICAL - Time not in sync with network!"));
                }
                else {
-                       asprintf (&output_message,_("OK! Time in sync with network!"));
+                       asprintf (&output_message,_("OK - Time in sync with network!"));
                }
 
                /* check LRU sitting time in secondss */
        } else if (vars_to_check==LRUS) {
 
                send_buffer = strdup ("S4\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                lru_time=strtoul(recv_buffer,NULL,10);
@@ -622,7 +634,7 @@ main(int argc, char **argv) {
        } else if (vars_to_check==DCB) {
 
                send_buffer = strdup ("S6\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                dirty_cache_buffers=atoi(recv_buffer);
@@ -631,13 +643,13 @@ main(int argc, char **argv) {
                        result=STATE_CRITICAL;
                else if (check_warning_value==TRUE && dirty_cache_buffers <= warning_value)
                        result=STATE_WARNING;
-               asprintf (&output_message,_("dirty cache buffers = %lu%% of the total"),dirty_cache_buffers);
+               asprintf (&output_message,_("Dirty cache buffers = %lu%% of the total"),dirty_cache_buffers);
 
                /* check % total cache buffers as a percentage of the original*/
        } else if (vars_to_check==TCB) {
 
                send_buffer = strdup ("S7\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
                total_cache_buffers=atoi(recv_buffer);
@@ -646,11 +658,11 @@ main(int argc, char **argv) {
                        result=STATE_CRITICAL;
                else if (check_warning_value==TRUE && total_cache_buffers <= warning_value)
                        result=STATE_WARNING;
-               asprintf (&output_message,_("total cache buffers = %lu%% of the original"),total_cache_buffers);
+               asprintf (&output_message,_("Total cache buffers = %lu%% of the original"),total_cache_buffers);
                
        } else if (vars_to_check==DSVER) {
                asprintf (&send_buffer,"S13\r\n");
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
@@ -659,7 +671,7 @@ main(int argc, char **argv) {
                asprintf (&output_message,_("NDS Version %s"),recv_buffer);
 
        } else if (vars_to_check==UPTIME) {
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
@@ -669,7 +681,7 @@ main(int argc, char **argv) {
 
        } else if (vars_to_check==NLM) {
                asprintf (&send_buffer,"S24:%s\r\n",nlm_name);
-               result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer));
+               result=send_tcp_request(sd,send_buffer,recv_buffer,sizeof(recv_buffer));
                if (result!=STATE_OK)
                        return result;
 
@@ -688,6 +700,8 @@ main(int argc, char **argv) {
 
        }
 
+       close (sd);
+
        /* reset timeout */
        alarm(0);
 
@@ -695,13 +709,15 @@ main(int argc, char **argv) {
 
        return result;
 }
-\f
+
+
+
 /* process command-line arguments */
 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'},
@@ -736,7 +752,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;
@@ -763,7 +779,7 @@ int process_arguments(int argc, char **argv) {
                                if (is_intnonneg(optarg))
                                        server_port=atoi(optarg);
                                else
-                                       terminate(STATE_UNKNOWN,_("Server port an integer (seconds)\nType '%s -h' for additional help\n"),progname);
+                                       die(STATE_UNKNOWN,_("Server port an integer (seconds)\nType '%s -h' for additional help\n"),progname);
                                break;
                        case 'v':
                                if (strlen(optarg)<3)
@@ -878,14 +894,8 @@ int process_arguments(int argc, char **argv) {
 
        return OK;
 }
-\f
-void print_usage(void)
-{
-       printf (_("\
-Usage: %s -H host [-p port] [-v variable] [-w warning] [-c critical]\n\
-  [-t timeout].\n"), progname);
-       printf (_(UT_HLP_VRS), progname, progname);
-}
+
+
 
 void print_help(void)
 {
@@ -894,8 +904,8 @@ void print_help(void)
 
        print_revision (progname, revision);
 
-       printf (_("Copyright (c) 1999-2001 Ethan Galstad <nagios@nagios.org>\n"));
-       printf (_(COPYRIGHT), copyright, email);
+       printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n");
+       printf (COPYRIGHT, copyright, email);
 
        printf (_("\
 Usage: %s This plugin attempts to contact the MRTGEXT NLM running\n\
@@ -972,3 +982,12 @@ Notes:\n\
 
        printf (_(UT_SUPPORT));
 }
+
+
+
+void print_usage(void)
+{
+       printf ("\
+Usage: %s -H host [-p port] [-v variable] [-w warning] [-c critical]\n\
+          [-t timeout].\n", progname);
+}