From 6bcd0516e73c2c300333df2bfa38f0d50cad0b98 Mon Sep 17 00:00:00 2001 From: pelldis <44728514+pelldis@users.noreply.github.com> Date: Tue, 21 Sep 2021 09:01:12 +0300 Subject: [PATCH 1/2] Update __init__.py --- aioping/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/aioping/__init__.py b/aioping/__init__.py index d594d62..d154300 100644 --- a/aioping/__init__.py +++ b/aioping/__init__.py @@ -300,15 +300,22 @@ async def verbose_ping(dest_addr, timeout=2, count=3, family=None): """ for i in range(count): delay = None - + result = '' try: delay = await ping(dest_addr, timeout, family) + if delay: + result = True + else: + result = False except TimeoutError as e: + result = False logger.error("%s timed out after %ss" % (dest_addr, timeout)) except Exception as e: logger.error("%s failed: %s" % (dest_addr, str(e))) + result = False break if delay is not None: delay *= 1000 logger.info("%s get ping in %0.4fms" % (dest_addr, delay)) + return result From 7f3d4dea88754db67026c994cc7573da9088f53a Mon Sep 17 00:00:00 2001 From: pelldis <44728514+pelldis@users.noreply.github.com> Date: Tue, 21 Sep 2021 09:10:45 +0300 Subject: [PATCH 2/2] Update __init__.py Added return value for use script result in if/else form. Added stop_ping parameter for case, when you send more, then one icmp request, and just want check, that host alive in spite of some loss. --- aioping/__init__.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/aioping/__init__.py b/aioping/__init__.py index d154300..8642a64 100644 --- a/aioping/__init__.py +++ b/aioping/__init__.py @@ -289,24 +289,25 @@ async def ping(dest_addr, timeout=10, family=None): return delay -async def verbose_ping(dest_addr, timeout=2, count=3, family=None): +async def verbose_ping(dest_addr, timeout=2, count=3, family=None, stop_ping=False): """ Send >count< ping to >dest_addr< with the given >timeout< and display - the result. + the result. Set stop_ping to True, if you want to check just 1 echo reply from + several requests. :param dest_addr: :param timeout: :param count: :param family: + :param stop_ping: """ for i in range(count): delay = None result = '' try: delay = await ping(dest_addr, timeout, family) - if delay: - result = True - else: - result = False + result = True + if stop_ping: + break except TimeoutError as e: result = False logger.error("%s timed out after %ss" % (dest_addr, timeout))