summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Nierlein <Sven.Nierlein@consol.de>2013-09-13 13:36:10 (GMT)
committerSven Nierlein <sven@consol.de>2013-09-13 15:14:33 (GMT)
commit8b1c57429806e1e98b77d38567956a0181f3d781 (patch)
tree5d36474059f02f9bd14c07222b84d803b566953b
parent8f5e92e1ed143bf2afd095a44ae6bb597ab7a5dc (diff)
downloadmonitoring-plugins-8b1c57429806e1e98b77d38567956a0181f3d781.tar.gz
fping: some fping versions set loss to 0% by mistake
fping v2.4b2 returns 10.99.0.1 : xmt/rcv/%loss = 0/0/0% for a failed host, so we assume the host is down if xmt is zero
-rw-r--r--plugins/check_fping.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/plugins/check_fping.c b/plugins/check_fping.c
index c7cce97..dad000e 100644
--- a/plugins/check_fping.c
+++ b/plugins/check_fping.c
@@ -177,8 +177,10 @@ textscan (char *buf)
177{ 177{
178 char *rtastr = NULL; 178 char *rtastr = NULL;
179 char *losstr = NULL; 179 char *losstr = NULL;
180 char *xmtstr = NULL;
180 double loss; 181 double loss;
181 double rta; 182 double rta;
183 double xmt;
182 int status = STATE_UNKNOWN; 184 int status = STATE_UNKNOWN;
183 185
184 if (strstr (buf, "not found")) { 186 if (strstr (buf, "not found")) {
@@ -230,7 +232,12 @@ textscan (char *buf)
230 } 232 }
231 else if(strstr (buf, "xmt/rcv/%loss") ) { 233 else if(strstr (buf, "xmt/rcv/%loss") ) {
232 /* no min/max/avg if host was unreachable in fping v2.2.b1 */ 234 /* no min/max/avg if host was unreachable in fping v2.2.b1 */
235 /* in v2.4b2: 10.99.0.1 : xmt/rcv/%loss = 0/0/0% */
233 losstr = strstr (buf, "="); 236 losstr = strstr (buf, "=");
237 xmtstr = 1 + losstr;
238 xmt = strtod (xmtstr, NULL);
239 if(xmt == 0)
240 die (STATE_CRITICAL, _("FPING CRITICAL - %s is down\n"), server_name);
234 losstr = 1 + strstr (losstr, "/"); 241 losstr = 1 + strstr (losstr, "/");
235 losstr = 1 + strstr (losstr, "/"); 242 losstr = 1 + strstr (losstr, "/");
236 loss = strtod (losstr, NULL); 243 loss = strtod (losstr, NULL);