diff options
author | Sven Nierlein <Sven.Nierlein@consol.de> | 2013-09-13 13:36:10 (GMT) |
---|---|---|
committer | Sven Nierlein <sven@consol.de> | 2013-09-13 15:14:33 (GMT) |
commit | 8b1c57429806e1e98b77d38567956a0181f3d781 (patch) | |
tree | 5d36474059f02f9bd14c07222b84d803b566953b | |
parent | 8f5e92e1ed143bf2afd095a44ae6bb597ab7a5dc (diff) | |
download | monitoring-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.c | 7 |
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); |