diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_ping.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/plugins/check_ping.c b/plugins/check_ping.c index ecdd6183..1367e903 100644 --- a/plugins/check_ping.c +++ b/plugins/check_ping.c | |||
| @@ -432,6 +432,7 @@ run_ping (const char *cmd, const char *addr) | |||
| 432 | { | 432 | { |
| 433 | char buf[MAX_INPUT_BUFFER]; | 433 | char buf[MAX_INPUT_BUFFER]; |
| 434 | int result = STATE_UNKNOWN; | 434 | int result = STATE_UNKNOWN; |
| 435 | int match; | ||
| 435 | 436 | ||
| 436 | if ((child_process = spopen (cmd)) == NULL) | 437 | if ((child_process = spopen (cmd)) == NULL) |
| 437 | die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), cmd); | 438 | die (STATE_UNKNOWN, _("Could not open pipe: %s\n"), cmd); |
| @@ -448,28 +449,29 @@ run_ping (const char *cmd, const char *addr) | |||
| 448 | result = max_state (result, error_scan (buf, addr)); | 449 | result = max_state (result, error_scan (buf, addr)); |
| 449 | 450 | ||
| 450 | /* get the percent loss statistics */ | 451 | /* get the percent loss statistics */ |
| 451 | if(sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d errors, %d%% packet loss",&pl)==1 || | 452 | match = 0; |
| 452 | sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d duplicates, %d%% packet loss", &pl) == 1 || | 453 | if((sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d errors, %d%% packet loss%n",&pl,&match) && match) || |
| 453 | sscanf(buf,"%*d packets transmitted, %*d received, +%*d duplicates, %d%% packet loss", &pl) == 1 || | 454 | (sscanf(buf,"%*d packets transmitted, %*d packets received, +%*d duplicates, %d%% packet loss%n",&pl,&match) && match) || |
| 454 | sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% packet loss",&pl)==1 || | 455 | (sscanf(buf,"%*d packets transmitted, %*d received, +%*d duplicates, %d%% packet loss%n",&pl,&match) && match) || |
| 455 | sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% loss, time",&pl)==1 || | 456 | (sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% packet loss%n",&pl,&match) && match) || |
| 456 | sscanf(buf,"%*d packets transmitted, %*d received, %d%% loss, time", &pl)==1 || | 457 | (sscanf(buf,"%*d packets transmitted, %*d packets received, %d%% loss, time%n",&pl,&match) && match) || |
| 457 | sscanf(buf,"%*d packets transmitted, %*d received, %d%% packet loss, time", &pl)==1 || | 458 | (sscanf(buf,"%*d packets transmitted, %*d received, %d%% loss, time%n",&pl,&match) && match) || |
| 458 | sscanf(buf,"%*d packets transmitted, %*d received, +%*d errors, %d%% packet loss", &pl) == 1 || | 459 | (sscanf(buf,"%*d packets transmitted, %*d received, %d%% packet loss, time%n",&pl,&match) && match) || |
| 459 | sscanf(buf,"%*d packets transmitted %*d received, +%*d errors, %d%% packet loss", &pl) == 1 | 460 | (sscanf(buf,"%*d packets transmitted, %*d received, +%*d errors, %d%% packet loss%n",&pl,&match) && match) || |
| 461 | (sscanf(buf,"%*d packets transmitted %*d received, +%*d errors, %d%% packet loss%n",&pl,&match) && match) | ||
| 460 | ) | 462 | ) |
| 461 | continue; | 463 | continue; |
| 462 | 464 | ||
| 463 | /* get the round trip average */ | 465 | /* get the round trip average */ |
| 464 | else | 466 | else |
| 465 | if(sscanf(buf,"round-trip min/avg/max = %*f/%f/%*f",&rta)==1 || | 467 | if((sscanf(buf,"round-trip min/avg/max = %*f/%f/%*f%n",&rta,&match) && match) || |
| 466 | sscanf(buf,"round-trip min/avg/max/mdev = %*f/%f/%*f/%*f",&rta)==1 || | 468 | (sscanf(buf,"round-trip min/avg/max/mdev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || |
| 467 | sscanf(buf,"round-trip min/avg/max/sdev = %*f/%f/%*f/%*f",&rta)==1 || | 469 | (sscanf(buf,"round-trip min/avg/max/sdev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || |
| 468 | sscanf(buf,"round-trip min/avg/max/stddev = %*f/%f/%*f/%*f",&rta)==1 || | 470 | (sscanf(buf,"round-trip min/avg/max/stddev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || |
| 469 | sscanf(buf,"round-trip min/avg/max/std-dev = %*f/%f/%*f/%*f",&rta)==1 || | 471 | (sscanf(buf,"round-trip min/avg/max/std-dev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || |
| 470 | sscanf(buf,"round-trip (ms) min/avg/max = %*f/%f/%*f",&rta)==1 || | 472 | (sscanf(buf,"round-trip (ms) min/avg/max = %*f/%f/%*f%n",&rta,&match) && match) || |
| 471 | sscanf(buf,"round-trip (ms) min/avg/max/stddev = %*f/%f/%*f/%*f",&rta)==1 || | 473 | (sscanf(buf,"round-trip (ms) min/avg/max/stddev = %*f/%f/%*f/%*f%n",&rta,&match) && match) || |
| 472 | sscanf(buf,"rtt min/avg/max/mdev = %*f/%f/%*f/%*f ms",&rta)==1) | 474 | (sscanf(buf,"rtt min/avg/max/mdev = %*f/%f/%*f/%*f ms%n",&rta,&match) && match)) |
| 473 | continue; | 475 | continue; |
| 474 | } | 476 | } |
| 475 | 477 | ||
