Python Ping3
Page content
Need a Litte Ping Function ?
Test
cat <<'EOF'> ping.py
import argparse
from ping3 import ping, verbose_ping
def do_ping(host: str, timeout: int = 3, size: int = 1500, output: str = "json"):
# output: json|txt
# '21.54 ms'
if size > 1500:
size = 1500
result = (
str(
round(
ping(dest_addr=host, timeout=timeout, size=size, unit="ms"),
2,
)
)
+ " ms"
)
if output.lower() == "json":
return {"host": host, "timeout": timeout, "size": size, "result": result}
if output.lower() == "txt":
return result
else:
return f"output format '{output} unknown! use 'json|txt'"
def do_multiple_ping(host: str, count: int = 3, interval: float = 0):
# ping 'www.stoege.net' ... 23ms
# ping 'www.stoege.net' ... 24ms
# ping 'www.stoege.net' ... 20ms
verbose_ping(
dest_addr=host,
count=count,
interval=interval,
)
def main():
# Create the argument parser
parser = argparse.ArgumentParser(description="Ping a domain or IP address.")
# Add the host argument
parser.add_argument(
"host",
metavar="HOST",
type=str,
nargs="?",
default="www.stoege.net",
help="the domain or IP address to ping",
)
# Parse the command-line arguments
args = parser.parse_args()
# Call the ping function
output = do_ping(host=args.host, output="json")
# Print the ping output
print(f"\n{output}\n")
# Call the ping function. No return Value !
do_multiple_ping(host=args.host, count=10, interval=0.1)
if __name__ == "__main__":
main()
EOF
add module
poetry, venv, whatever you like
poetry init
poetry add ping3
poetry install
and see it in action …
python ping.py
{'host': 'www.stoege.net', 'timeout': 3, 'size': 1500, 'result': '22.71 ms'}
ping 'www.stoege.net' ... 20ms
ping 'www.stoege.net' ... 20ms
ping 'www.stoege.net' ... 19ms
ping 'www.stoege.net' ... 19ms
ping 'www.stoege.net' ... 20ms
ping 'www.stoege.net' ... 19ms
ping 'www.stoege.net' ... 20ms
ping 'www.stoege.net' ... 20ms
ping 'www.stoege.net' ... 20ms
ping 'www.stoege.net' ... 20ms
Any Comments ?
sha256: f04e666f3e11802f1dc050961821f7009a948e374d00396de7eb6b99d9702cb6