diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_snmp.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c index 0ef0c653..d66d834e 100644 --- a/plugins/check_snmp.c +++ b/plugins/check_snmp.c | |||
| @@ -82,6 +82,7 @@ regex_t preg; | |||
| 82 | regmatch_t pmatch[10]; | 82 | regmatch_t pmatch[10]; |
| 83 | char timestamp[10] = ""; | 83 | char timestamp[10] = ""; |
| 84 | char errbuf[MAX_INPUT_BUFFER]; | 84 | char errbuf[MAX_INPUT_BUFFER]; |
| 85 | char perfstr[MAX_INPUT_BUFFER]; | ||
| 85 | int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; | 86 | int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; |
| 86 | int eflags = 0; | 87 | int eflags = 0; |
| 87 | int errcode, excode; | 88 | int errcode, excode; |
| @@ -136,6 +137,7 @@ main (int argc, char **argv) | |||
| 136 | char *ptr = NULL; | 137 | char *ptr = NULL; |
| 137 | char *p2 = NULL; | 138 | char *p2 = NULL; |
| 138 | char *show = NULL; | 139 | char *show = NULL; |
| 140 | char type[8]; | ||
| 139 | 141 | ||
| 140 | setlocale (LC_ALL, ""); | 142 | setlocale (LC_ALL, ""); |
| 141 | bindtextdomain (PACKAGE, LOCALEDIR); | 143 | bindtextdomain (PACKAGE, LOCALEDIR); |
| @@ -153,7 +155,7 @@ main (int argc, char **argv) | |||
| 153 | port = strdup (DEFAULT_PORT); | 155 | port = strdup (DEFAULT_PORT); |
| 154 | outbuff = strdup (""); | 156 | outbuff = strdup (""); |
| 155 | output = strdup (""); | 157 | output = strdup (""); |
| 156 | delimiter = strdup (DEFAULT_DELIMITER); | 158 | delimiter = strdup (" = "); |
| 157 | output_delim = strdup (DEFAULT_OUTPUT_DELIMITER); | 159 | output_delim = strdup (DEFAULT_OUTPUT_DELIMITER); |
| 158 | miblist = strdup (DEFAULT_MIBLIST); | 160 | miblist = strdup (DEFAULT_MIBLIST); |
| 159 | timeout_interval = DEFAULT_TIMEOUT; | 161 | timeout_interval = DEFAULT_TIMEOUT; |
| @@ -189,9 +191,14 @@ main (int argc, char **argv) | |||
| 189 | 191 | ||
| 190 | ptr = output; | 192 | ptr = output; |
| 191 | 193 | ||
| 194 | strcat(perfstr, "| "); | ||
| 192 | while (ptr) { | 195 | while (ptr) { |
| 196 | char *foo; | ||
| 197 | |||
| 198 | foo = strstr (ptr, delimiter); | ||
| 199 | strncat(perfstr, ptr, foo-ptr); | ||
| 200 | ptr = foo; | ||
| 193 | 201 | ||
| 194 | ptr = strstr (ptr, delimiter); | ||
| 195 | if (ptr == NULL) | 202 | if (ptr == NULL) |
| 196 | break; | 203 | break; |
| 197 | 204 | ||
| @@ -227,8 +234,10 @@ main (int argc, char **argv) | |||
| 227 | show = strstr (response, "Gauge: ") + 7; | 234 | show = strstr (response, "Gauge: ") + 7; |
| 228 | else if (strstr (response, "Gauge32: ")) | 235 | else if (strstr (response, "Gauge32: ")) |
| 229 | show = strstr (response, "Gauge32: ") + 9; | 236 | show = strstr (response, "Gauge32: ") + 9; |
| 230 | else if (strstr (response, "Counter32: ")) | 237 | else if (strstr (response, "Counter32: ")) { |
| 231 | show = strstr (response, "Counter32: ") + 11; | 238 | show = strstr (response, "Counter32: ") + 11; |
| 239 | strcpy(type, "c"); | ||
| 240 | } | ||
| 232 | else if (strstr (response, "INTEGER: ")) | 241 | else if (strstr (response, "INTEGER: ")) |
| 233 | show = strstr (response, "INTEGER: ") + 9; | 242 | show = strstr (response, "INTEGER: ") + 9; |
| 234 | else if (strstr (response, "STRING: ")) | 243 | else if (strstr (response, "STRING: ")) |
| @@ -317,7 +326,11 @@ main (int argc, char **argv) | |||
| 317 | 326 | ||
| 318 | i++; | 327 | i++; |
| 319 | 328 | ||
| 320 | } /* end while (ptr) */ | 329 | char *str[MAX_INPUT_BUFFER]; |
| 330 | asprintf(str, "=%s%s;;;; ", show, type ? type : ""); | ||
| 331 | strcat(perfstr, *str); | ||
| 332 | |||
| 333 | } /* end while (ptr) */ | ||
| 321 | 334 | ||
| 322 | if (found == 0) | 335 | if (found == 0) |
| 323 | die (STATE_UNKNOWN, | 336 | die (STATE_UNKNOWN, |
| @@ -339,7 +352,7 @@ main (int argc, char **argv) | |||
| 339 | /* if (nunits == 1 || i == 1) */ | 352 | /* if (nunits == 1 || i == 1) */ |
| 340 | /* printf ("%s %s -%s %s\n", label, state_text (result), outbuff, units); */ | 353 | /* printf ("%s %s -%s %s\n", label, state_text (result), outbuff, units); */ |
| 341 | /* else */ | 354 | /* else */ |
| 342 | printf ("%s %s -%s\n", label, state_text (result), outbuff); | 355 | printf ("%s %s -%s %s \n", label, state_text (result), outbuff, perfstr); |
| 343 | 356 | ||
| 344 | return result; | 357 | return result; |
| 345 | } | 358 | } |
