diff options
-rw-r--r-- | plugins/check_nwstat.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/check_nwstat.c b/plugins/check_nwstat.c index 723cf33b..5dbde9ce 100644 --- a/plugins/check_nwstat.c +++ b/plugins/check_nwstat.c | |||
@@ -69,6 +69,7 @@ to gather the requested system information.\n" | |||
69 | DCB = dirty cache buffers as a percentage of the total\n\ | 69 | DCB = dirty cache buffers as a percentage of the total\n\ |
70 | TCB = dirty cache buffers as a percentage of the original\n\ | 70 | TCB = dirty cache buffers as a percentage of the original\n\ |
71 | UPTIME = server uptime\n\ | 71 | UPTIME = server uptime\n\ |
72 | NLM:<nlm> = check if NLM is loaded and report version (e.g. \"NLM:TSANDS.NLM\")\n\ | ||
72 | -w, --warning=INTEGER\n\ | 73 | -w, --warning=INTEGER\n\ |
73 | Threshold which will result in a warning status\n\ | 74 | Threshold which will result in a warning status\n\ |
74 | -c, --critical=INTEGER\n\ | 75 | -c, --critical=INTEGER\n\ |
@@ -127,11 +128,13 @@ Notes:\n\ | |||
127 | #define CHECK_TCB 26 /* check total cache buffers as a percentage of the original */ | 128 | #define CHECK_TCB 26 /* check total cache buffers as a percentage of the original */ |
128 | #define CHECK_DSVER 27 /* check NDS version */ | 129 | #define CHECK_DSVER 27 /* check NDS version */ |
129 | #define CHECK_UPTIME 28 /* check server uptime */ | 130 | #define CHECK_UPTIME 28 /* check server uptime */ |
131 | #define CHECK_NLM 29 /* check NLM loaded */ | ||
130 | 132 | ||
131 | #define PORT 9999 | 133 | #define PORT 9999 |
132 | 134 | ||
133 | char *server_address=NULL; | 135 | char *server_address=NULL; |
134 | char *volume_name=NULL; | 136 | char *volume_name=NULL; |
137 | char *nlm_name=NULL; | ||
135 | int server_port=PORT; | 138 | int server_port=PORT; |
136 | unsigned long warning_value=0L; | 139 | unsigned long warning_value=0L; |
137 | unsigned long critical_value=0L; | 140 | unsigned long critical_value=0L; |
@@ -702,6 +705,20 @@ int main(int argc, char **argv){ | |||
702 | 705 | ||
703 | asprintf(&output_message,"Up %s",recv_buffer); | 706 | asprintf(&output_message,"Up %s",recv_buffer); |
704 | 707 | ||
708 | } else if (vars_to_check==CHECK_NLM) { | ||
709 | asprintf(&send_buffer,"S24:%s\r\n",nlm_name); | ||
710 | result=process_tcp_request(server_address,server_port,send_buffer,recv_buffer,sizeof(recv_buffer)); | ||
711 | if(result!=STATE_OK) | ||
712 | return result; | ||
713 | |||
714 | recv_buffer[strlen(recv_buffer)-1]=0; | ||
715 | if(strcmp(recv_buffer,"-1")) { | ||
716 | asprintf(&output_message,"Module %s version %s is loaded",nlm_name,recv_buffer); | ||
717 | } else { | ||
718 | result=STATE_CRITICAL; | ||
719 | asprintf(&output_message,"Module %s is not loaded",nlm_name); | ||
720 | } | ||
721 | |||
705 | } else { | 722 | } else { |
706 | 723 | ||
707 | output_message = strscpy(output_message,"Nothing to check!\n"); | 724 | output_message = strscpy(output_message,"Nothing to check!\n"); |
@@ -875,6 +892,10 @@ int process_arguments(int argc, char **argv){ | |||
875 | vars_to_check=CHECK_DSVER; | 892 | vars_to_check=CHECK_DSVER; |
876 | else if(!strcmp(optarg,"UPTIME")) | 893 | else if(!strcmp(optarg,"UPTIME")) |
877 | vars_to_check=CHECK_UPTIME; | 894 | vars_to_check=CHECK_UPTIME; |
895 | else if(strncmp(optarg,"NLM:",4)==0) { | ||
896 | vars_to_check=CHECK_NLM; | ||
897 | nlm_name=strscpy(nlm_name,optarg+4); | ||
898 | } | ||
878 | else | 899 | else |
879 | return ERROR; | 900 | return ERROR; |
880 | break; | 901 | break; |