diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_nt.c | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 605d4792..ef0a66b5 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | * | 2 | * |
| 3 | * CHECK_NT.C | 3 | * CHECK_NT.C |
| 4 | * | 4 | * |
| 5 | * Program: Windows NT plugin for NetSaint | 5 | * Program: Windows NT plugin for Nagios |
| 6 | * License: GPL | 6 | * License: GPL |
| 7 | * Copyright (c) 2000-2002 Yves Rubin (rubiyz@yahoo.com) | 7 | * Copyright (c) 2000-2002 Yves Rubin (rubiyz@yahoo.com) |
| 8 | * | 8 | * |
| @@ -78,12 +78,16 @@ int main(int argc, char **argv){ | |||
| 78 | int return_code = STATE_UNKNOWN; | 78 | int return_code = STATE_UNKNOWN; |
| 79 | char *send_buffer=NULL; | 79 | char *send_buffer=NULL; |
| 80 | char *output_message=NULL; | 80 | char *output_message=NULL; |
| 81 | char *perfdata=NULL; | ||
| 81 | char *temp_string=NULL; | 82 | char *temp_string=NULL; |
| 83 | char *temp_string_perf=NULL; | ||
| 82 | char *description=NULL; | 84 | char *description=NULL; |
| 83 | 85 | ||
| 84 | double total_disk_space=0; | 86 | double total_disk_space=0; |
| 85 | double free_disk_space=0; | 87 | double free_disk_space=0; |
| 86 | double percent_used_space=0; | 88 | double percent_used_space=0; |
| 89 | double warning_used_space=0; | ||
| 90 | double critical_used_space=0; | ||
| 87 | double mem_commitLimit=0; | 91 | double mem_commitLimit=0; |
| 88 | double mem_commitByte=0; | 92 | double mem_commitByte=0; |
| 89 | unsigned long utilization; | 93 | unsigned long utilization; |
| @@ -133,6 +137,8 @@ int main(int argc, char **argv){ | |||
| 133 | /* -l parameters is present with only integers */ | 137 | /* -l parameters is present with only integers */ |
| 134 | return_code=STATE_OK; | 138 | return_code=STATE_OK; |
| 135 | temp_string = strdup (_("CPU Load")); | 139 | temp_string = strdup (_("CPU Load")); |
| 140 | temp_string_perf = strdup (_(" ")); | ||
| 141 | |||
| 136 | /* loop until one of the parameters is wrong or not present */ | 142 | /* loop until one of the parameters is wrong or not present */ |
| 137 | while (lvalue_list[0+offset]> (unsigned long)0 && | 143 | while (lvalue_list[0+offset]> (unsigned long)0 && |
| 138 | lvalue_list[0+offset]<=(unsigned long)17280 && | 144 | lvalue_list[0+offset]<=(unsigned long)17280 && |
| @@ -155,11 +161,16 @@ int main(int argc, char **argv){ | |||
| 155 | 161 | ||
| 156 | asprintf(&output_message,_(" %lu%% (%lu min average)"), utilization, lvalue_list[0+offset]); | 162 | asprintf(&output_message,_(" %lu%% (%lu min average)"), utilization, lvalue_list[0+offset]); |
| 157 | asprintf(&temp_string,"%s%s",temp_string,output_message); | 163 | asprintf(&temp_string,"%s%s",temp_string,output_message); |
| 164 | asprintf(&perfdata,_(" '%lu min avg Load'=%lu%%;%lu;%lu;0;100"), lvalue_list[0+offset], utilization, | ||
| 165 | lvalue_list[1+offset], lvalue_list[2+offset]); | ||
| 166 | asprintf(&temp_string_perf,"%s%s",temp_string_perf,perfdata); | ||
| 158 | offset+=3; /* move across the array */ | 167 | offset+=3; /* move across the array */ |
| 159 | } | 168 | } |
| 160 | if (strlen(temp_string)>10) /* we had at least one loop */ | 169 | |
| 170 | if (strlen(temp_string)>10) { /* we had at least one loop */ | ||
| 161 | output_message = strdup (temp_string); | 171 | output_message = strdup (temp_string); |
| 162 | else | 172 | perfdata = temp_string_perf; |
| 173 | } else | ||
| 163 | output_message = strdup (_("not enough values for -l parameters")); | 174 | output_message = strdup (_("not enough values for -l parameters")); |
| 164 | } | 175 | } |
| 165 | break; | 176 | break; |
| @@ -188,12 +199,16 @@ int main(int argc, char **argv){ | |||
| 188 | free_disk_space=atof(strtok(recv_buffer,"&")); | 199 | free_disk_space=atof(strtok(recv_buffer,"&")); |
| 189 | total_disk_space=atof(strtok(NULL,"&")); | 200 | total_disk_space=atof(strtok(NULL,"&")); |
| 190 | percent_used_space = ((total_disk_space - free_disk_space) / total_disk_space) * 100; | 201 | percent_used_space = ((total_disk_space - free_disk_space) / total_disk_space) * 100; |
| 202 | warning_used_space = ((float)warning_value / 100) * total_disk_space; | ||
| 203 | critical_used_space = ((float)critical_value / 100) * total_disk_space; | ||
| 191 | 204 | ||
| 192 | if (free_disk_space>=0) { | 205 | if (free_disk_space>=0) { |
| 193 | asprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), | 206 | asprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), |
| 194 | value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, percent_used_space, | 207 | value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, |
| 195 | free_disk_space / 1073741824, (free_disk_space / total_disk_space)*100); | 208 | percent_used_space, free_disk_space / 1073741824, (free_disk_space / total_disk_space)*100); |
| 196 | 209 | asprintf(&temp_string_perf,_("'%s:\\ Used Space'=%.2fGb;%.2f;%.2f;0.00;%.2f"), value_list, | |
| 210 | (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, | ||
| 211 | critical_used_space / 1073741824, total_disk_space / 1073741824); | ||
| 197 | 212 | ||
| 198 | if(check_critical_value==TRUE && percent_used_space >= critical_value) | 213 | if(check_critical_value==TRUE && percent_used_space >= critical_value) |
| 199 | return_code=STATE_CRITICAL; | 214 | return_code=STATE_CRITICAL; |
| @@ -203,8 +218,8 @@ int main(int argc, char **argv){ | |||
| 203 | return_code=STATE_OK; | 218 | return_code=STATE_OK; |
| 204 | 219 | ||
| 205 | output_message = strdup (temp_string); | 220 | output_message = strdup (temp_string); |
| 206 | } | 221 | perfdata = temp_string_perf; |
| 207 | else { | 222 | } else { |
| 208 | output_message = strdup (_("Free disk space : Invalid drive ")); | 223 | output_message = strdup (_("Free disk space : Invalid drive ")); |
| 209 | return_code=STATE_UNKNOWN; | 224 | return_code=STATE_UNKNOWN; |
| 210 | } | 225 | } |
| @@ -234,9 +249,15 @@ int main(int argc, char **argv){ | |||
| 234 | mem_commitLimit=atof(strtok(recv_buffer,"&")); | 249 | mem_commitLimit=atof(strtok(recv_buffer,"&")); |
| 235 | mem_commitByte=atof(strtok(NULL,"&")); | 250 | mem_commitByte=atof(strtok(NULL,"&")); |
| 236 | percent_used_space = (mem_commitByte / mem_commitLimit) * 100; | 251 | percent_used_space = (mem_commitByte / mem_commitLimit) * 100; |
| 252 | warning_used_space = ((float)warning_value / 100) * mem_commitLimit; | ||
| 253 | critical_used_space = ((float)critical_value / 100) * mem_commitLimit; | ||
| 254 | |||
| 255 | // Changed divisor in following line from 1048567 to 3044515 to accurately reflect memory size | ||
| 237 | asprintf(&output_message,_("Memory usage: total:%.2f Mb - used: %.2f Mb (%.0f%%) - free: %.2f Mb (%.0f%%)"), | 256 | asprintf(&output_message,_("Memory usage: total:%.2f Mb - used: %.2f Mb (%.0f%%) - free: %.2f Mb (%.0f%%)"), |
| 238 | mem_commitLimit / 1048576, mem_commitByte / 1048567, percent_used_space, | 257 | mem_commitLimit / 3044515, mem_commitByte / 3044515, percent_used_space, |
| 239 | (mem_commitLimit - mem_commitByte) / 1048576, (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100); | 258 | (mem_commitLimit - mem_commitByte) / 3044515, (mem_commitLimit - mem_commitByte) / mem_commitLimit * 100); |
| 259 | asprintf(&perfdata,_("'Memory usage'=%.2fMb;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 3044515, | ||
| 260 | warning_used_space / 3044515, critical_used_space / 3044515, mem_commitLimit / 3044515); | ||
| 240 | 261 | ||
| 241 | return_code=STATE_OK; | 262 | return_code=STATE_OK; |
| 242 | if(check_critical_value==TRUE && percent_used_space >= critical_value) | 263 | if(check_critical_value==TRUE && percent_used_space >= critical_value) |
| @@ -262,6 +283,7 @@ int main(int argc, char **argv){ | |||
| 262 | asprintf(&output_message, "%.f", counter_value); | 283 | asprintf(&output_message, "%.f", counter_value); |
| 263 | else | 284 | else |
| 264 | asprintf(&output_message,"%s = %.f", description, counter_value); | 285 | asprintf(&output_message,"%s = %.f", description, counter_value); |
| 286 | asprintf(&perfdata,"'%s'=%.f", description, counter_value); | ||
| 265 | 287 | ||
| 266 | if (critical_value > warning_value) { /* Normal thresholds */ | 288 | if (critical_value > warning_value) { /* Normal thresholds */ |
| 267 | if(check_critical_value==TRUE && counter_value >= critical_value) | 289 | if(check_critical_value==TRUE && counter_value >= critical_value) |
| @@ -322,8 +344,10 @@ int main(int argc, char **argv){ | |||
| 322 | /* reset timeout */ | 344 | /* reset timeout */ |
| 323 | alarm(0); | 345 | alarm(0); |
| 324 | 346 | ||
| 325 | printf("%s\n",output_message); | 347 | if (perfdata==NULL) |
| 326 | 348 | printf("%s\n",output_message); | |
| 349 | else | ||
| 350 | printf("%s | %s\n",output_message,perfdata); | ||
| 327 | return return_code; | 351 | return return_code; |
| 328 | } | 352 | } |
| 329 | 353 | ||
| @@ -575,7 +599,7 @@ Windows NT/2000/XP server.\n\n")); | |||
| 575 | Some examples:\n\ | 599 | Some examples:\n\ |
| 576 | \"Paging file usage is %%.2f %%%%\"\n\ | 600 | \"Paging file usage is %%.2f %%%%\"\n\ |
| 577 | \"%%.f %%%% paging file used.\"\n")); | 601 | \"%%.f %%%% paging file used.\"\n")); |
| 578 | printf (_("Notes:\n\ | 602 | printf (_("Notes:\n\ |
| 579 | - The NSClient service should be running on the server to get any information\n\ | 603 | - The NSClient service should be running on the server to get any information\n\ |
| 580 | (http://nsclient.ready2run.nl).\n\ | 604 | (http://nsclient.ready2run.nl).\n\ |
| 581 | - Critical thresholds should be lower than warning thresholds\n")); | 605 | - Critical thresholds should be lower than warning thresholds\n")); |
