PingerPlot 1.2.0
PingerPlot 1.2.0 — headless mode + reliability.
The big one: PingerPlot now runs without a GUI, so you can monitor 24/7 from a server or a VLAN-probe host under Task Scheduler. Plus correctness/robustness fixes and the snappier UI from 1.1.1. Still pure Python standard library — zero third-party dependencies.
New
- Headless / service mode.
python -m pingerplot.headless --init monitor.jsonwrites a starter config;python -m pingerplot.headless monitor.jsonruns it (Ctrl-C to stop). A JSON config drives N targets (defaults + per-target overrides), each logging to its own crash-safe, rotating CSV, with periodic status lines to the console. Built for Windows Task Scheduler;pip install .also adds apingerplot-headlesscommand.
Reliability & correctness
- Fixed a TCP-traceroute bug: in elevated full-traceroute mode a hop that returned a hard unreachable could vanish from the round and be logged as a plain timeout. It now always records a definite result.
- Session saves are atomic (temp + replace) — a crash mid-write can't truncate the file.
- Session load caps hops and samples against a crafted/corrupt file.
- Faster UI (from 1.1.1): per-tick CPU ~30 ms → ~2–3 ms; the sidebar is ~97× cheaper with several targets, so it stays responsive as you add more.
Tested
95 tests across Windows + Linux × Python 3.10–3.13, including new coverage for the route grow/shrink logic and the geo-IP resolver.
Install / run (no Git needed)
- Download Source code (zip) below and extract it anywhere.
- GUI: double-click
PingerPlot.vbs. Headless:python -m pingerplot.headless --init monitor.json.
Requires Windows 10/11 and Python 3.10+. Full TCP/UDP traceroute needs an elevated session; ICMP works as a normal user. The headless engine runs anywhere Python does.
Full changelog: v1.1.1...v1.2.0