diff options
| author | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2023-09-18 22:59:46 +0200 |
|---|---|---|
| committer | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2023-09-18 22:59:46 +0200 |
| commit | 0e70e81133c25274fe2dd2309556b41357dd759b (patch) | |
| tree | 9a680b36788ee1ad4e7ecc5ccfeb4494db9fdc72 /plugins/check_ping.c | |
| parent | ce355c80cf6054bfa5e1dcf81f9e2183ef963ee1 (diff) | |
| parent | 2ddc75e69db5a3dd379c896d8420c9af20ec1cee (diff) | |
| download | monitoring-plugins-0e70e81133c25274fe2dd2309556b41357dd759b.tar.gz | |
Merge branch 'master' into mysql_detect_mysqldump
Diffstat (limited to 'plugins/check_ping.c')
| -rw-r--r-- | plugins/check_ping.c | 69 |
1 files changed, 38 insertions, 31 deletions
diff --git a/plugins/check_ping.c b/plugins/check_ping.c index 423ecbe5..741f732e 100644 --- a/plugins/check_ping.c +++ b/plugins/check_ping.c | |||
| @@ -37,6 +37,8 @@ const char *email = "devel@monitoring-plugins.org"; | |||
| 37 | #include "popen.h" | 37 | #include "popen.h" |
| 38 | #include "utils.h" | 38 | #include "utils.h" |
| 39 | 39 | ||
| 40 | #include <signal.h> | ||
| 41 | |||
| 40 | #define WARN_DUPLICATES "DUPLICATES FOUND! " | 42 | #define WARN_DUPLICATES "DUPLICATES FOUND! " |
| 41 | #define UNKNOWN_TRIP_TIME -1.0 /* -1 seconds */ | 43 | #define UNKNOWN_TRIP_TIME -1.0 /* -1 seconds */ |
| 42 | 44 | ||
| @@ -138,7 +140,7 @@ main (int argc, char **argv) | |||
| 138 | if (pl == UNKNOWN_PACKET_LOSS || rta < 0.0) { | 140 | if (pl == UNKNOWN_PACKET_LOSS || rta < 0.0) { |
| 139 | printf ("%s\n", cmd); | 141 | printf ("%s\n", cmd); |
| 140 | die (STATE_UNKNOWN, | 142 | die (STATE_UNKNOWN, |
| 141 | _("CRITICAL - Could not interpret output from ping command\n")); | 143 | _("CRITICAL - Could not interpret output from ping command\n")); |
| 142 | } | 144 | } |
| 143 | 145 | ||
| 144 | if (pl >= cpl || rta >= crta || rta < 0) | 146 | if (pl >= cpl || rta >= crta || rta < 0) |
| @@ -163,10 +165,14 @@ main (int argc, char **argv) | |||
| 163 | printf ("</A>"); | 165 | printf ("</A>"); |
| 164 | 166 | ||
| 165 | /* Print performance data */ | 167 | /* Print performance data */ |
| 166 | printf("|%s", fperfdata ("rta", (double) rta, "ms", | 168 | if (pl != 100) { |
| 167 | wrta>0?TRUE:FALSE, wrta, | 169 | printf("|%s", fperfdata ("rta", (double) rta, "ms", |
| 168 | crta>0?TRUE:FALSE, crta, | 170 | wrta>0?TRUE:FALSE, wrta, |
| 169 | TRUE, 0, FALSE, 0)); | 171 | crta>0?TRUE:FALSE, crta, |
| 172 | TRUE, 0, FALSE, 0)); | ||
| 173 | } else { | ||
| 174 | printf("| rta=U;%f;%f;;", wrta, crta); | ||
| 175 | } | ||
| 170 | printf(" %s\n", perfdata ("pl", (long) pl, "%", | 176 | printf(" %s\n", perfdata ("pl", (long) pl, "%", |
| 171 | wpl>0?TRUE:FALSE, wpl, | 177 | wpl>0?TRUE:FALSE, wpl, |
| 172 | cpl>0?TRUE:FALSE, cpl, | 178 | cpl>0?TRUE:FALSE, cpl, |
| @@ -521,12 +527,13 @@ int | |||
| 521 | error_scan (char buf[MAX_INPUT_BUFFER], const char *addr) | 527 | error_scan (char buf[MAX_INPUT_BUFFER], const char *addr) |
| 522 | { | 528 | { |
| 523 | if (strstr (buf, "Network is unreachable") || | 529 | if (strstr (buf, "Network is unreachable") || |
| 524 | strstr (buf, "Destination Net Unreachable") | 530 | strstr (buf, "Destination Net Unreachable") || |
| 531 | strstr (buf, "No route") | ||
| 525 | ) | 532 | ) |
| 526 | die (STATE_CRITICAL, _("CRITICAL - Network Unreachable (%s)\n"), addr); | 533 | die (STATE_CRITICAL, _("CRITICAL - Network Unreachable (%s)\n"), addr); |
| 527 | else if (strstr (buf, "Destination Host Unreachable")) | 534 | else if (strstr (buf, "Destination Host Unreachable") || strstr(buf, "Address unreachable")) |
| 528 | die (STATE_CRITICAL, _("CRITICAL - Host Unreachable (%s)\n"), addr); | 535 | die (STATE_CRITICAL, _("CRITICAL - Host Unreachable (%s)\n"), addr); |
| 529 | else if (strstr (buf, "Destination Port Unreachable")) | 536 | else if (strstr (buf, "Destination Port Unreachable") || strstr(buf, "Port unreachable")) |
| 530 | die (STATE_CRITICAL, _("CRITICAL - Bogus ICMP: Port Unreachable (%s)\n"), addr); | 537 | die (STATE_CRITICAL, _("CRITICAL - Bogus ICMP: Port Unreachable (%s)\n"), addr); |
| 531 | else if (strstr (buf, "Destination Protocol Unreachable")) | 538 | else if (strstr (buf, "Destination Protocol Unreachable")) |
| 532 | die (STATE_CRITICAL, _("CRITICAL - Bogus ICMP: Protocol Unreachable (%s)\n"), addr); | 539 | die (STATE_CRITICAL, _("CRITICAL - Bogus ICMP: Protocol Unreachable (%s)\n"), addr); |
| @@ -534,11 +541,11 @@ error_scan (char buf[MAX_INPUT_BUFFER], const char *addr) | |||
| 534 | die (STATE_CRITICAL, _("CRITICAL - Network Prohibited (%s)\n"), addr); | 541 | die (STATE_CRITICAL, _("CRITICAL - Network Prohibited (%s)\n"), addr); |
| 535 | else if (strstr (buf, "Destination Host Prohibited")) | 542 | else if (strstr (buf, "Destination Host Prohibited")) |
| 536 | die (STATE_CRITICAL, _("CRITICAL - Host Prohibited (%s)\n"), addr); | 543 | die (STATE_CRITICAL, _("CRITICAL - Host Prohibited (%s)\n"), addr); |
| 537 | else if (strstr (buf, "Packet filtered")) | 544 | else if (strstr (buf, "Packet filtered") || strstr(buf, "Administratively prohibited")) |
| 538 | die (STATE_CRITICAL, _("CRITICAL - Packet Filtered (%s)\n"), addr); | 545 | die (STATE_CRITICAL, _("CRITICAL - Packet Filtered (%s)\n"), addr); |
| 539 | else if (strstr (buf, "unknown host" )) | 546 | else if (strstr (buf, "unknown host" )) |
| 540 | die (STATE_CRITICAL, _("CRITICAL - Host not found (%s)\n"), addr); | 547 | die (STATE_CRITICAL, _("CRITICAL - Host not found (%s)\n"), addr); |
| 541 | else if (strstr (buf, "Time to live exceeded")) | 548 | else if (strstr (buf, "Time to live exceeded") || strstr(buf, "Time exceeded")) |
| 542 | die (STATE_CRITICAL, _("CRITICAL - Time to live exceeded (%s)\n"), addr); | 549 | die (STATE_CRITICAL, _("CRITICAL - Time to live exceeded (%s)\n"), addr); |
| 543 | else if (strstr (buf, "Destination unreachable: ")) | 550 | else if (strstr (buf, "Destination unreachable: ")) |
| 544 | die (STATE_CRITICAL, _("CRITICAL - Destination Unreachable (%s)\n"), addr); | 551 | die (STATE_CRITICAL, _("CRITICAL - Destination Unreachable (%s)\n"), addr); |
| @@ -547,7 +554,7 @@ error_scan (char buf[MAX_INPUT_BUFFER], const char *addr) | |||
| 547 | if (warn_text == NULL) | 554 | if (warn_text == NULL) |
| 548 | warn_text = strdup (_(WARN_DUPLICATES)); | 555 | warn_text = strdup (_(WARN_DUPLICATES)); |
| 549 | else if (! strstr (warn_text, _(WARN_DUPLICATES)) && | 556 | else if (! strstr (warn_text, _(WARN_DUPLICATES)) && |
| 550 | xasprintf (&warn_text, "%s %s", warn_text, _(WARN_DUPLICATES)) == -1) | 557 | xasprintf (&warn_text, "%s %s", warn_text, _(WARN_DUPLICATES)) == -1) |
| 551 | die (STATE_UNKNOWN, _("Unable to realloc warn_text\n")); | 558 | die (STATE_UNKNOWN, _("Unable to realloc warn_text\n")); |
| 552 | return (STATE_WARNING); | 559 | return (STATE_WARNING); |
| 553 | } | 560 | } |
| @@ -567,7 +574,7 @@ print_help (void) | |||
| 567 | 574 | ||
| 568 | printf (_("Use ping to check connection statistics for a remote host.")); | 575 | printf (_("Use ping to check connection statistics for a remote host.")); |
| 569 | 576 | ||
| 570 | printf ("\n\n"); | 577 | printf ("\n\n"); |
| 571 | 578 | ||
| 572 | print_usage (); | 579 | print_usage (); |
| 573 | 580 | ||
| @@ -577,29 +584,29 @@ print_help (void) | |||
| 577 | printf (UT_IPv46); | 584 | printf (UT_IPv46); |
| 578 | 585 | ||
| 579 | printf (" %s\n", "-H, --hostname=HOST"); | 586 | printf (" %s\n", "-H, --hostname=HOST"); |
| 580 | printf (" %s\n", _("host to ping")); | 587 | printf (" %s\n", _("host to ping")); |
| 581 | printf (" %s\n", "-w, --warning=THRESHOLD"); | 588 | printf (" %s\n", "-w, --warning=THRESHOLD"); |
| 582 | printf (" %s\n", _("warning threshold pair")); | 589 | printf (" %s\n", _("warning threshold pair")); |
| 583 | printf (" %s\n", "-c, --critical=THRESHOLD"); | 590 | printf (" %s\n", "-c, --critical=THRESHOLD"); |
| 584 | printf (" %s\n", _("critical threshold pair")); | 591 | printf (" %s\n", _("critical threshold pair")); |
| 585 | printf (" %s\n", "-p, --packets=INTEGER"); | 592 | printf (" %s\n", "-p, --packets=INTEGER"); |
| 586 | printf (" %s ", _("number of ICMP ECHO packets to send")); | 593 | printf (" %s ", _("number of ICMP ECHO packets to send")); |
| 587 | printf (_("(Default: %d)\n"), DEFAULT_MAX_PACKETS); | 594 | printf (_("(Default: %d)\n"), DEFAULT_MAX_PACKETS); |
| 588 | printf (" %s\n", "-L, --link"); | 595 | printf (" %s\n", "-L, --link"); |
| 589 | printf (" %s\n", _("show HTML in the plugin output (obsoleted by urlize)")); | 596 | printf (" %s\n", _("show HTML in the plugin output (obsoleted by urlize)")); |
| 590 | 597 | ||
| 591 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | 598 | printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); |
| 592 | 599 | ||
| 593 | printf ("\n"); | 600 | printf ("\n"); |
| 594 | printf ("%s\n", _("THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel")); | 601 | printf ("%s\n", _("THRESHOLD is <rta>,<pl>% where <rta> is the round trip average travel")); |
| 595 | printf ("%s\n", _("time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the")); | 602 | printf ("%s\n", _("time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the")); |
| 596 | printf ("%s\n", _("percentage of packet loss to trigger an alarm state.")); | 603 | printf ("%s\n", _("percentage of packet loss to trigger an alarm state.")); |
| 597 | 604 | ||
| 598 | printf ("\n"); | 605 | printf ("\n"); |
| 599 | printf ("%s\n", _("This plugin uses the ping command to probe the specified host for packet loss")); | 606 | printf ("%s\n", _("This plugin uses the ping command to probe the specified host for packet loss")); |
| 600 | printf ("%s\n", _("(percentage) and round trip average (milliseconds). It can produce HTML output")); | 607 | printf ("%s\n", _("(percentage) and round trip average (milliseconds). It can produce HTML output")); |
| 601 | printf ("%s\n", _("linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in")); | 608 | printf ("%s\n", _("linking to a traceroute CGI contributed by Ian Cass. The CGI can be found in")); |
| 602 | printf ("%s\n", _("the contrib area of the downloads section at http://www.nagios.org/")); | 609 | printf ("%s\n", _("the contrib area of the downloads section at http://www.nagios.org/")); |
| 603 | 610 | ||
| 604 | printf (UT_SUPPORT); | 611 | printf (UT_SUPPORT); |
| 605 | } | 612 | } |
| @@ -607,7 +614,7 @@ print_help (void) | |||
| 607 | void | 614 | void |
| 608 | print_usage (void) | 615 | print_usage (void) |
| 609 | { | 616 | { |
| 610 | printf ("%s\n", _("Usage:")); | 617 | printf ("%s\n", _("Usage:")); |
| 611 | printf ("%s -H <host_address> -w <wrta>,<wpl>%% -c <crta>,<cpl>%%\n", progname); | 618 | printf ("%s -H <host_address> -w <wrta>,<wpl>%% -c <crta>,<cpl>%%\n", progname); |
| 612 | printf (" [-p packets] [-t timeout] [-4|-6]\n"); | 619 | printf (" [-p packets] [-t timeout] [-4|-6]\n"); |
| 613 | } | 620 | } |
