From 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 30 Sep 2013 00:03:24 +0200 Subject: Import Nagios Plugins site Import the Nagios Plugins web site, Cronjobs, infrastructure scripts, and configuration files. --- web/attachments/330612-rangesupport.patch | 326 ++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 web/attachments/330612-rangesupport.patch (limited to 'web/attachments/330612-rangesupport.patch') diff --git a/web/attachments/330612-rangesupport.patch b/web/attachments/330612-rangesupport.patch new file mode 100644 index 0000000..b32527a --- /dev/null +++ b/web/attachments/330612-rangesupport.patch @@ -0,0 +1,326 @@ +diff --git a/plugins/check_nt.c b/plugins/check_nt.c +index d038efe..e2b8722 100644 +--- a/plugins/check_nt.c ++++ b/plugins/check_nt.c +@@ -65,8 +65,10 @@ int server_port=PORT; + char *value_list=NULL; + char *req_password=NULL; + unsigned long lvalue_list[MAX_VALUE_LIST]; +-unsigned long warning_value=0L; +-unsigned long critical_value=0L; ++range *warning_value=NULL; ++range *critical_value=NULL; ++const char *warning_value_string=""; ++const char *critical_value_string=""; + int check_warning_value=FALSE; + int check_critical_value=FALSE; + enum checkvars vars_to_check = CHECK_NONE; +@@ -81,6 +83,16 @@ int strtoularray(unsigned long *array, char *string, const char *delim); + void print_help(void); + void print_usage(void); + ++bool allnumeric(const char* number) ++{ ++ int i; ++ for(i=0; number[i]; i++) ++ { ++ if(number[i]<'0'||number[i]>'9'){return false;} ++ } ++ return true; ++} ++ + int main(int argc, char **argv){ + + /* should be int result = STATE_UNKNOWN; */ +@@ -224,8 +236,8 @@ int main(int argc, char **argv){ + + if (total_disk_space>0 && free_disk_space>=0) { + percent_used_space = ((total_disk_space - free_disk_space) / total_disk_space) * 100; +- warning_used_space = ((float)warning_value / 100) * total_disk_space; +- critical_used_space = ((float)critical_value / 100) * total_disk_space; ++ warning_used_space = ((float)(warning_value?warning_value->end:0) / 100) * total_disk_space; ++ critical_used_space = ((float)(critical_value?critical_value->end:0) / 100) * total_disk_space; + + asprintf(&temp_string,_("%s:\\ - total: %.2f Gb - used: %.2f Gb (%.0f%%) - free %.2f Gb (%.0f%%)"), + value_list, total_disk_space / 1073741824, (total_disk_space - free_disk_space) / 1073741824, +@@ -234,12 +246,33 @@ int main(int argc, char **argv){ + (total_disk_space - free_disk_space) / 1073741824, warning_used_space / 1073741824, + critical_used_space / 1073741824, total_disk_space / 1073741824); + +- if(check_critical_value==TRUE && percent_used_space >= critical_value) +- return_code=STATE_CRITICAL; +- else if (check_warning_value==TRUE && percent_used_space >= warning_value) +- return_code=STATE_WARNING; +- else +- return_code=STATE_OK; ++ if(allnumeric(critical_value_string)&&allnumeric(warning_value_string)) ++ { ++ if (critical_value > warning_value) ++ { /* Normal thresholds */ ++ if (check_critical_value == TRUE && percent_used_space >= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && percent_used_space >= warning_value->end) ++ return_code = STATE_WARNING; ++ else ++ return_code = STATE_OK; ++ } ++ else ++ { /* inverse thresholds */ ++ return_code = STATE_OK; ++ if (check_critical_value == TRUE && percent_used_space <= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && percent_used_space <= warning_value->end) ++ return_code = STATE_WARNING; ++ } ++ }else{ ++ if(check_critical_value==TRUE && check_range(percent_used_space, critical_value)) ++ return_code=STATE_CRITICAL; ++ else if (check_warning_value==TRUE && check_range(percent_used_space, warning_value)) ++ return_code=STATE_WARNING; ++ else ++ return_code=STATE_OK; ++ } + + output_message = strdup (temp_string); + perfdata = temp_string_perf; +@@ -273,8 +306,8 @@ int main(int argc, char **argv){ + mem_commitLimit=atof(strtok(recv_buffer,"&")); + mem_commitByte=atof(strtok(NULL,"&")); + percent_used_space = (mem_commitByte / mem_commitLimit) * 100; +- warning_used_space = ((float)warning_value / 100) * mem_commitLimit; +- critical_used_space = ((float)critical_value / 100) * mem_commitLimit; ++ warning_used_space = ((float)(warning_value?warning_value->end:0) / 100) * mem_commitLimit; ++ critical_used_space = ((float)(warning_value?critical_value->end:0) / 100) * mem_commitLimit; + + /* Divisor should be 1048567, not 3044515, as we are measuring "Commit Charge" here, + which equals RAM + Pagefiles. */ +@@ -284,12 +317,32 @@ int main(int argc, char **argv){ + asprintf(&perfdata,_("'Memory usage'=%.2fMb;%.2f;%.2f;0.00;%.2f"), mem_commitByte / 1048567, + warning_used_space / 1048567, critical_used_space / 1048567, mem_commitLimit / 1048567); + +- return_code=STATE_OK; +- if(check_critical_value==TRUE && percent_used_space >= critical_value) +- return_code=STATE_CRITICAL; +- else if (check_warning_value==TRUE && percent_used_space >= warning_value) +- return_code=STATE_WARNING; +- ++ if(allnumeric(critical_value_string)&&allnumeric(warning_value_string)) ++ { ++ if (critical_value > warning_value) ++ { /* Normal thresholds */ ++ if (check_critical_value == TRUE && percent_used_space >= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && percent_used_space >= warning_value->end) ++ return_code = STATE_WARNING; ++ else ++ return_code = STATE_OK; ++ } ++ else ++ { /* inverse thresholds */ ++ return_code = STATE_OK; ++ if (check_critical_value == TRUE && percent_used_space <= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && percent_used_space <= warning_value->end) ++ return_code = STATE_WARNING; ++ } ++ }else{ ++ return_code=STATE_OK; ++ if(check_critical_value==TRUE && check_range(percent_used_space, critical_value)) ++ return_code=STATE_CRITICAL; ++ else if (check_warning_value==TRUE && check_range(percent_used_space, warning_value)) ++ return_code=STATE_WARNING; ++ } + break; + + case CHECK_COUNTER: +@@ -373,29 +426,41 @@ int main(int argc, char **argv){ + } + 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, ++ fperfdatarange (description, counter_value, ++ counter_unit, warning_value_string, critical_value_string, + (!(isPercent) && (minval != NULL)), fminval, + (!(isPercent) && (minval != NULL)), fmaxval)); + } + } + +- if (critical_value > warning_value) +- { /* Normal thresholds */ +- if (check_critical_value == TRUE && counter_value >= critical_value) +- return_code = STATE_CRITICAL; +- else if (check_warning_value == TRUE && counter_value >= warning_value) +- return_code = STATE_WARNING; ++ if(allnumeric(critical_value_string)&&allnumeric(warning_value_string)) ++ { ++ if (critical_value > warning_value) ++ { /* Normal thresholds */ ++ if (check_critical_value == TRUE && counter_value >= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && counter_value >= warning_value->end) ++ return_code = STATE_WARNING; ++ else ++ return_code = STATE_OK; ++ } + else ++ { /* inverse thresholds */ + return_code = STATE_OK; +- } +- else +- { /* inverse thresholds */ +- return_code = STATE_OK; +- if (check_critical_value == TRUE && counter_value <= critical_value) ++ if (check_critical_value == TRUE && counter_value <= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && counter_value <= warning_value->end) ++ return_code = STATE_WARNING; ++ } ++ }else{ ++ if(check_critical_value == TRUE && check_range(counter_value, critical_value)) ++ { + return_code = STATE_CRITICAL; +- else if (check_warning_value == TRUE && counter_value <= warning_value) ++ }else if(check_warning_value == TRUE && check_range(counter_value, warning_value)) { + return_code = STATE_WARNING; ++ }else{ ++ return_code = STATE_OK; ++ } + } + break; + +@@ -411,21 +476,34 @@ int main(int argc, char **argv){ + description = strtok(NULL,"&"); + output_message = strdup (description); + +- if (critical_value > warning_value) { /* Normal thresholds */ +- if(check_critical_value==TRUE && age_in_minutes >= critical_value) +- return_code=STATE_CRITICAL; +- else if (check_warning_value==TRUE && age_in_minutes >= warning_value) +- return_code=STATE_WARNING; +- else +- return_code=STATE_OK; +- } +- else { /* inverse thresholds */ +- if(check_critical_value==TRUE && age_in_minutes <= critical_value) +- return_code=STATE_CRITICAL; +- else if (check_warning_value==TRUE && age_in_minutes <= warning_value) +- return_code=STATE_WARNING; ++ if(allnumeric(critical_value_string)&&allnumeric(warning_value_string)) ++ { ++ if (critical_value > warning_value) ++ { /* Normal thresholds */ ++ if (check_critical_value == TRUE && age_in_minutes >= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && age_in_minutes >= warning_value->end) ++ return_code = STATE_WARNING; ++ else ++ return_code = STATE_OK; ++ } + else +- return_code=STATE_OK; ++ { /* inverse thresholds */ ++ return_code = STATE_OK; ++ if (check_critical_value == TRUE && age_in_minutes <= critical_value->end) ++ return_code = STATE_CRITICAL; ++ else if (check_warning_value == TRUE && age_in_minutes <= warning_value->end) ++ return_code = STATE_WARNING; ++ } ++ }else{ ++ if(check_critical_value == TRUE && check_range(age_in_minutes, critical_value)) ++ { ++ return_code = STATE_CRITICAL; ++ }else if(check_warning_value == TRUE && check_range(age_in_minutes, warning_value)) { ++ return_code = STATE_WARNING; ++ }else{ ++ return_code = STATE_OK; ++ } + } + } + break; +@@ -563,11 +641,13 @@ int process_arguments(int argc, char **argv){ + value_list = optarg; + break; + case 'w': /* warning threshold */ +- warning_value=strtoul(optarg,NULL,10); ++ warning_value=parse_range_string(optarg); ++ warning_value_string=optarg; + check_warning_value=TRUE; + break; + case 'c': /* critical threshold */ +- critical_value=strtoul(optarg,NULL,10); ++ critical_value=parse_range_string(optarg); ++ critical_value_string=optarg; + check_critical_value=TRUE; + break; + case 'd': /* Display select for services */ +diff --git a/plugins/utils.c b/plugins/utils.c +index 4537390..f4f6433 100644 +--- a/plugins/utils.c ++++ b/plugins/utils.c +@@ -600,3 +600,44 @@ char *fperfdata (const char *label, + + return data; + } ++ ++char *fperfdatarange (const char *label, ++ double val, ++ const char *uom, ++ const char *warn, ++ const char *crit, ++ int minp, ++ double minv, ++ int maxp, ++ double maxv) ++{ ++ char *data = NULL; ++ ++ if (strpbrk (label, "'= ")) ++ asprintf (&data, "'%s'=", label); ++ else ++ asprintf (&data, "%s=", label); ++ ++ asprintf (&data, "%s%f", data, val); ++ asprintf (&data, "%s%s;", data, uom); ++ ++ if (warn) ++ asprintf (&data, "%s%s", data, warn); ++ ++ asprintf (&data, "%s;", data); ++ ++ if (crit) ++ asprintf (&data, "%s%s", data, crit); ++ ++ asprintf (&data, "%s;", data); ++ ++ if (minp) ++ asprintf (&data, "%s%f", data, minv); ++ ++ if (maxp) { ++ asprintf (&data, "%s;", data); ++ asprintf (&data, "%s%f", data, maxv); ++ } ++ ++ return data; ++} +diff --git a/plugins/utils.h b/plugins/utils.h +index d6e9c8f..bd8fe1d 100644 +--- a/plugins/utils.h ++++ b/plugins/utils.h +@@ -121,6 +121,16 @@ char *fperfdata (const char *, + int, + double); + ++char *fperfdatarange (const char *, ++ double, ++ const char *, ++ const char *, ++ const char *, ++ int, ++ double, ++ int, ++ double); ++ + /* The idea here is that, although not every plugin will use all of these, + most will or should. Therefore, for consistency, these very common + options should have only these meanings throughout the overall suite */ -- cgit v1.2.3-74-g34f1