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