Skip to main content

Pure Python ICMP ping with statistics and hop count

Project description

pyminiping

pyminiping is a pure Python ICMP ping library for Linux servers.

PyPI version Build status Python versions License

It sends one or more ICMP echo packets and provides detailed statistics: min, max, mean, median, jitter, TTL, estimated number of hops, and an OS family guess based on TTL.

Features

  • Pure Python ICMP Echo (RAW socket, requires root or CAP_NET_RAW)
  • Statistics: min, max, mean, median, jitter (standard deviation)
  • Sent/received packet count and loss percentage
  • TTL and estimated hop count (hops)
  • Operating system family guess (os_guess) based on received TTL
  • Customizable parameters: count, timeout, interval, size
  • IPv4 and IPv6 supporting
  • dscp value (0-63) for traffic prioritization
  • Percentile 95

Installation

git clone https://github.com/roxy-wi/pyminiping.git
cd pyminiping
python3 -m pip install .

Example usage

from pyminiping import ping, DestinationUnreachable

try:
    result = ping('8.8.8.8', count=5, timeout=1, interval=0.2)
    print(result)
    print(result.as_dict())
except DestinationUnreachable as e:
    print(f"Unreachable: {e.message} (code {e.code})")
except Exception as e:
    print(f"Ping failed: {e}")

Example Output

PingResult(
    sent=5,
    received=5,
    loss=0.0,
    min=0.0044,
    max=0.0062,
    mean=0.0048,
    median=0.0045,
    jitter=0.0007,
    rtt_list=[0.0062, 0.0044, 0.0045, 0.0044, 0.0045],
    ttl=110,
    hops=19,
    os_guess='Windows',
    p95=0.0007
)

or as dict

{
    'sent': 5,
    'received': 5,
    'loss': 0.0,
    'min': 0.0044,
    'max': 0.0062,
    'mean': 0.0048,
    'median': 0.0045,
    'jitter': 0.0007,
    'rtt_list': [0.0062, 0.0044, 0.0045, 0.0044, 0.0045],
    'ttl': 110,
    'hops': 19,
    'os_guess': 'Windows',
    'p95': 0.0007
}

Command-Line Interface (CLI)

After installing pyminiping, you can use it as a command-line tool.

Option Description Default
host Host to ping (required)
-c, --count Number of packets to send 4
-t, --timeout Timeout per packet (seconds) 1
-i, --interval Interval between packets (seconds, float allowed) 0.1
-s, --size Payload size in bytes 8
--dscp DSCP value (0-63, for QoS) not set

Basic usage

sudo pyminiping 8.8.8.8

Common DSCP values

Name DSCP Use Case
Default 0 Best Effort
CS1 8 Background
AF11 10 Low-priority data
AF21 18 Standard
AF41 46 Voice, high-priority
EF 46 Expedited Forwarding

Notes

Requires root privileges or CAP_NET_RAW capability (e.g., sudo python3 yourscript.py)

Linux only (tested on Ubuntu/Debian)

The hop count (hops) is calculated using common initial TTL values (64, 128, 255). For most Linux servers this is accurate.

Troubleshooting RAW socket permissions

  • If you see: "Root privileges or CAP_NET_RAW are required to create RAW socket"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyminiping-1.0.2.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyminiping-1.0.2-py3-none-any.whl (21.1 kB view details)

Uploaded Python 3

File details

Details for the file pyminiping-1.0.2.tar.gz.

File metadata

  • Download URL: pyminiping-1.0.2.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyminiping-1.0.2.tar.gz
Algorithm Hash digest
SHA256 48ef8e0085fa6939d953ffb27a97703f92a0c1a2348d51c82df1277787dc858c
MD5 e23af00d87458cfb4d882272eadf3c0e
BLAKE2b-256 4ec08a10800326dc0cc967c69f599292c61d801e28d64fc80543dfb7760f2bff

See more details on using hashes here.

File details

Details for the file pyminiping-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: pyminiping-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 21.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyminiping-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fc5e86c404497b61a6ae80f25a5b30a2005ac2e05a752f7958799d2c7ae80282
MD5 778116dd643e2b0296eedf25ac48f8e4
BLAKE2b-256 e1f03410197fc47cc90b6dc35f210932477ab16e44467535d4ffdadb01e7be34

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page