diff options
author | Sven Nierlein <sven@nierlein.de> | 2012-06-26 20:53:13 +0200 |
---|---|---|
committer | Sven Nierlein <sven@nierlein.de> | 2012-06-26 20:53:13 +0200 |
commit | 9c886d049d1dec9be0ac147c57d2094d2d4773da (patch) | |
tree | 277c3a24d09892713f4d651d980ad748db86d440 /plugins/check_snmp.c | |
parent | cf07b50a8213a5d4e6739e3a426cbe93c7113b1b (diff) | |
download | monitoring-plugins-9c886d049d1dec9be0ac147c57d2094d2d4773da.tar.gz |
Fix performance data label containing spaces in check_snmp (Jochen Bern)
Add --perf-oids option for check_snmp to retain optional 1.4.14 compatibility
Diffstat (limited to 'plugins/check_snmp.c')
-rw-r--r-- | plugins/check_snmp.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index 4cd38051..51ad6f4e 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c | |||
@@ -141,6 +141,7 @@ int calculate_rate = 0; | |||
141 | int rate_multiplier = 1; | 141 | int rate_multiplier = 1; |
142 | state_data *previous_state; | 142 | state_data *previous_state; |
143 | double previous_value[MAX_OIDS]; | 143 | double previous_value[MAX_OIDS]; |
144 | int perf_labels = 1; | ||
144 | 145 | ||
145 | 146 | ||
146 | int | 147 | int |
@@ -169,6 +170,7 @@ main (int argc, char **argv) | |||
169 | char *state_string=NULL; | 170 | char *state_string=NULL; |
170 | size_t response_length, current_length, string_length; | 171 | size_t response_length, current_length, string_length; |
171 | char *temp_string=NULL; | 172 | char *temp_string=NULL; |
173 | char *quote_string=NULL; | ||
172 | time_t current_time; | 174 | time_t current_time; |
173 | double temp_double; | 175 | double temp_double; |
174 | time_t duration; | 176 | time_t duration; |
@@ -485,11 +487,22 @@ main (int argc, char **argv) | |||
485 | ptr = NULL; | 487 | ptr = NULL; |
486 | strtod(show, &ptr); | 488 | strtod(show, &ptr); |
487 | if (ptr > show) { | 489 | if (ptr > show) { |
488 | if (nlabels >= (size_t)1 && (size_t)i < nlabels && labels[i] != NULL) | 490 | if (perf_labels && nlabels >= (size_t)1 && (size_t)i < nlabels && labels[i] != NULL) |
489 | temp_string=labels[i]; | 491 | temp_string=labels[i]; |
490 | else | 492 | else |
491 | temp_string=oidname; | 493 | temp_string=oidname; |
492 | strncat(perfstr, temp_string, sizeof(perfstr)-strlen(perfstr)-1); | 494 | if (strpbrk (temp_string, " ='\"") == NULL) { |
495 | strncat(perfstr, temp_string, sizeof(perfstr)-strlen(perfstr)-1); | ||
496 | } else { | ||
497 | if (strpbrk (temp_string, "\"") == NULL) { | ||
498 | quote_string="\""; | ||
499 | } else { | ||
500 | quote_string="'"; | ||
501 | } | ||
502 | strncat(perfstr, quote_string, sizeof(perfstr)-strlen(perfstr)-1); | ||
503 | strncat(perfstr, temp_string, sizeof(perfstr)-strlen(perfstr)-1); | ||
504 | strncat(perfstr, quote_string, sizeof(perfstr)-strlen(perfstr)-1); | ||
505 | } | ||
493 | strncat(perfstr, "=", sizeof(perfstr)-strlen(perfstr)-1); | 506 | strncat(perfstr, "=", sizeof(perfstr)-strlen(perfstr)-1); |
494 | len = sizeof(perfstr)-strlen(perfstr)-1; | 507 | len = sizeof(perfstr)-strlen(perfstr)-1; |
495 | strncat(perfstr, show, len>ptr-show ? ptr-show : len); | 508 | strncat(perfstr, show, len>ptr-show ? ptr-show : len); |
@@ -583,6 +596,7 @@ process_arguments (int argc, char **argv) | |||
583 | {"rate", no_argument, 0, L_CALCULATE_RATE}, | 596 | {"rate", no_argument, 0, L_CALCULATE_RATE}, |
584 | {"rate-multiplier", required_argument, 0, L_RATE_MULTIPLIER}, | 597 | {"rate-multiplier", required_argument, 0, L_RATE_MULTIPLIER}, |
585 | {"invert-search", no_argument, 0, L_INVERT_SEARCH}, | 598 | {"invert-search", no_argument, 0, L_INVERT_SEARCH}, |
599 | {"perf-oids", no_argument, 0, 'O'}, | ||
586 | {0, 0, 0, 0} | 600 | {0, 0, 0, 0} |
587 | }; | 601 | }; |
588 | 602 | ||
@@ -600,7 +614,7 @@ process_arguments (int argc, char **argv) | |||
600 | } | 614 | } |
601 | 615 | ||
602 | while (1) { | 616 | while (1) { |
603 | c = getopt_long (argc, argv, "nhvVt:c:w:H:C:o:e:E:d:D:s:t:R:r:l:u:p:m:P:L:U:a:x:A:X:", | 617 | c = getopt_long (argc, argv, "nhvVOt:c:w:H:C:o:e:E:d:D:s:t:R:r:l:u:p:m:P:L:U:a:x:A:X:", |
604 | longopts, &option); | 618 | longopts, &option); |
605 | 619 | ||
606 | if (c == -1 || c == EOF) | 620 | if (c == -1 || c == EOF) |
@@ -798,6 +812,9 @@ process_arguments (int argc, char **argv) | |||
798 | case L_INVERT_SEARCH: | 812 | case L_INVERT_SEARCH: |
799 | invert_search=1; | 813 | invert_search=1; |
800 | break; | 814 | break; |
815 | case 'O': | ||
816 | perf_labels=0; | ||
817 | break; | ||
801 | } | 818 | } |
802 | } | 819 | } |
803 | 820 | ||
@@ -1063,6 +1080,9 @@ print_help (void) | |||
1063 | printf (" %s\n", "-e, --retries=INTEGER"); | 1080 | printf (" %s\n", "-e, --retries=INTEGER"); |
1064 | printf (" %s\n", _("Number of retries to be used in the requests")); | 1081 | printf (" %s\n", _("Number of retries to be used in the requests")); |
1065 | 1082 | ||
1083 | printf (" %s\n", "-O, --perf-oids"); | ||
1084 | printf (" %s\n", _("Label performance data with OIDs instead of --label's")); | ||
1085 | |||
1066 | printf (UT_VERBOSE); | 1086 | printf (UT_VERBOSE); |
1067 | 1087 | ||
1068 | printf ("\n"); | 1088 | printf ("\n"); |