Get a clean, color-coded view of every reply and every hop in a single run enriched with private and public DNS, ipinfo.io and PeeringDB policies. Easily export the results in CSV and JSON format.
| You usually run | pingtrace gives you in one command |
|---|---|
ping then traceroute / tracert depending on OS then mtr |
you run universally pingtrace that style the output and offer additional flags like MTR |
dig +short for every hop |
reverse DNS resolved automatically, with optional private DNS for internal hops |
for ip in $(seq …) loops |
simply pingtrace 10.0.0.0/24 or --file targets.csv |
| copy/paste into a spreadsheet or note | --export ./reports writes timestamped UTC CSVs and pingtrace 10.0.0.0/21 do it by default; add --json for a schema-validated JSON report alongside |
It's the same probes you already trust (the OS ping / traceroute) pingtrace just runs them with no additional latency overhead, parallelize requests for faster CIDR resolution, decorates outputs for clear cross-platform readability including export.
go install github.com/skhell/pingtrace/cmd/pingtrace@latest
pingtrace help# the headline command ping + trace + enrichment
pingtrace 8.8.8.8
# live MTR (Ctrl+C / q to stop)
pingtrace 1.1.1.1 --mtr
# bounded MTR, 10 cycles, 2s apart, exported to CSV
pingtrace 1.1.1.1 -m --cycles 10 --interval 2 --export ./reports
# CSV + JSON report (JSON validates against schema/pingtrace.schema.json)
pingtrace 8.8.8.8 --export ./reports --json
# multiple targets, a CIDR, or a file
pingtrace 8.8.8.8,1.1.1.1,example.com
pingtrace 10.0.0.0/30
pingtrace --file ./targets.csv
# script-friendly: pick your columns
pingtrace 8.8.8.8 --no-trace --columns seq,ip,time_ms,statusRun pingtrace --help for the grouped, color-coded flag reference, and pingtrace config to open an interactive TUI for tokens, DNS, and thresholds.
pingtracedepends on systempingandtraceroutetooling being available onPATH.- On Windows,
tracertis used. - On Unix-like systems,
tracerouteis used, withtracepathas a fallback where available. --exportwithout a path writes operation-specific CSV files in the current working directory.- If
--exportpoints to a.csvfile path,pingtraceuses that file's directory and still writes separateping_...csvandtrace_...csvfiles. - Private DNS enrichment is automatically skipped if the configured server does not respond within 5 seconds.
--jsonwrites a sibling JSON report (probe_...jsonfor ping/trace runs,mtr_<target>_...jsonper MTR target) into the same directory as--export, or the current working directory when--exportis omitted. The document validates againstschema/pingtrace.schema.jsonand lists any CSVs written in itsexportedFilessection.- PeeringDB and ipinfo.io enrichment is skipped for private/RFC-1918 IP addresses.
If pingtrace saved you time in a troubleshooting session, it was worth building.
