summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarper Mann <harpermann@users.sourceforge.net>2005-04-05 21:26:56 +0000
committerHarper Mann <harpermann@users.sourceforge.net>2005-04-05 21:26:56 +0000
commit5d7f904c200d74365b36ef5f75817204cc7899a8 (patch)
tree12b918f782dafd85af2d679dbdfd19cefd34baed
parent1945dffb8d95a7ba5429c2a46cbccac9383651a4 (diff)
downloadmonitoring-plugins-5d7f904c200d74365b36ef5f75817204cc7899a8.tar.gz
This is a first cut at adding performance data to check_snmp. I wasn't sure
how to handle UOM so only values that return SNMP type Counter32: are labled with "c". All other values have a blank UOM. I also left off warn, crit, max and min values in the performance data until we come up with a way to handle them. git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1157 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--plugins/check_snmp.c23
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;
82regmatch_t pmatch[10]; 82regmatch_t pmatch[10];
83char timestamp[10] = ""; 83char timestamp[10] = "";
84char errbuf[MAX_INPUT_BUFFER]; 84char errbuf[MAX_INPUT_BUFFER];
85char perfstr[MAX_INPUT_BUFFER];
85int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE; 86int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE;
86int eflags = 0; 87int eflags = 0;
87int errcode, excode; 88int 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}