PingPoll
A small Flask library and app that pings a list of network devices, resolves their hostnames, and shows live status, latency and uptime on a dashboard — plus a subnet discovery sweep to find live hosts that aren't on your list yet.
Install
pip install -e .
Run
pingpoll --init # write an example NetFile into the current directory
pingpoll # serve the dashboard on http://localhost:5001
Or without installing:
pip install -r requirements.txt
python run.py
Use as a library
from pingpoll import serve
serve("NetFile", port=5001) # blocking dev server
from pingpoll import create_app # build the Flask app (e.g. for gunicorn)
app = create_app("NetFile")
from pingpoll import Monitor, Scanner # the pieces on their own
How it works
NetFile— your device list. One entry per line:<ip_or_host> [optional friendly name]. Lines starting with#are ignored. The path defaults to$PINGPOLL_NETFILE, else./NetFile.pingpoll.monitor— a background thread pings every device on an interval (default 10s), keeps rolling history, and computes uptime %, average latency, and up/down transitions. Hostnames are reverse-resolved.pingpoll.app— the Flask app factory serving the dashboard and JSON API.templates/+static/— the dashboard (auto-refreshes every 5s).
Network discovery
PingPoll can sweep your local subnet to find live hosts that aren't in the
NetFile. It auto-detects the local /24 (and any private /24s implied by
addresses already in the NetFile), pings every host, resolves hostnames, and
flags each as In NetFile (defined) or Undefined.
-
In the dashboard: click Scan network. Undefined hosts get a checkbox; select the ones you want and click Add selected to NetFile to append them (with their resolved hostname) and start monitoring immediately.
-
From the terminal:
pingpoll --scanprints a table of every live host and whether it's defined.
CLI
pingpoll [--netfile PATH] [--port 5001] [--host 0.0.0.0] [--open] [--debug]
pingpoll --init # write an example NetFile and exit
pingpoll --scan # one-off terminal subnet scan and exit
API
| Endpoint | Method | Purpose |
|---|---|---|
/ |
GET | Dashboard |
/api/status |
GET | Full status snapshot (JSON) |
/api/reload |
POST | Re-read the NetFile without restarting |
/api/scan |
POST | Start a subnet discovery sweep |
/api/discovery |
GET | Discovery results + progress (JSON) |
/api/adopt |
POST | Append discovered hosts to the NetFile |
Configuration
Tunables live at the top of pingpoll/monitor.py: PING_INTERVAL,
PING_TIMEOUT, HISTORY_LEN, WORKERS. Ping flags auto-adjust for
macOS / Linux / Windows.
Metadata
Release files for pingpoll 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pingpoll-0.1.0.tar.gz | 16.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pingpoll-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.4 kB
Release files / pingpoll-0.1.0.tar.gz
| Download URL | pingpoll-0.1.0.tar.gz |
|---|---|
| Size | 16.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9597bb8f2a03e4eaeb06ec5fe51e8b82c9f796b45a6e4fccb28e6d6255c63c0a
|
|
BLAKE2b-256 checksum How to use checksums |
11f924ce489260346b60f98cbdbb167d31b18d446e803a9eef632e1f4d471e3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / pingpoll-0.1.0-py3-none-any.whl
| Download URL | pingpoll-0.1.0-py3-none-any.whl |
|---|---|
| Size | 17.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3141f714aee9dc27ce6753b6a0365a7975a860e2e725e30e8be555fd5b6a30ce
|
|
BLAKE2b-256 checksum How to use checksums |
781c9ed1ccc6994a146dbf53ef3e45765747047f0d404fb1ac9abc14e58c462f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|