X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_nwstat.c;h=b791640f5e1d849efb5a7949586fd69699ed0140;hb=edf60f6dceba48555f2534d9a217a8c5913ce029;hp=94f0543b2c89f92632bed5a43f6de42334179f55;hpb=48c14d20bd4112826e4ac7775b847f8015c3c610;p=nagiosplug.git diff --git a/plugins/check_nwstat.c b/plugins/check_nwstat.c index 94f0543..b791640 100644 --- a/plugins/check_nwstat.c +++ b/plugins/check_nwstat.c @@ -14,11 +14,13 @@ 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; } - + + + /* 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; } - -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 \n")); - printf (_(COPYRIGHT), copyright, email); + printf ("Copyright (c) 1999 Ethan Galstad \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); +}