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

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'
)

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'
}

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.0.tar.gz (20.1 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.0-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyminiping-1.0.0.tar.gz
  • Upload date:
  • Size: 20.1 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.0.tar.gz
Algorithm Hash digest
SHA256 36016cd718600f4f0fdd088ce1f66339c64ab96887521c94b73f92c861492f29
MD5 1ab8a1591e0af668ee20479a66dced2f
BLAKE2b-256 4657c92a15095332529227121d4d404686101a84518612a48042b0052dfd9b9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyminiping-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 20.8 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50e953ffd8cdb7f8c6bdf8a4fd0c1ed78b2d2bf030e4803ed59dff196a4bb2f1
MD5 6c299a80b32d2a7327747b829d72b1eb
BLAKE2b-256 8e16994a4a12bc65f9b917e100a4c22661f2faf71894941ec32e58057eee2775

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