Show HN: Pingtrace

skhell1 pts0 comments

GitHub - skhell/pingtrace: Cross-platform ping + traceroute + MTR in one command. Static Go binary, no runtime required. DNS, PeeringDB and ipinfo.io enrichment built in. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

skhell

pingtrace

Public

Uh oh!

There was an error while loading. Please reload this page.

Notifications<br>You must be signed in to change notification settings

Fork

Star<br>10

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>14 Commits<br>14 Commits

.github

.github

cmd/pingtrace

cmd/pingtrace

internal

internal

schema

schema

.gitignore

.gitignore

.goreleaser.yaml

.goreleaser.yaml

CHANGELOG.md

CHANGELOG.md

LICENSE

LICENSE

README.md

README.md

SECURITY.md

SECURITY.md

go.mod

go.mod

go.sum

go.sum

View all files

Repository files navigation

pingtrace

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.

Why pingtrace over the standard tools?

You usually run<br>pingtrace gives you in one command

ping then traceroute / tracert depending on OS then mtr<br>you run universally pingtrace that style the output and offer additional flags like MTR

dig +short for every hop<br>reverse DNS resolved automatically, with optional private DNS for internal hops

for ip in $(seq …) loops<br>simply pingtrace 10.0.0.0/24 or --file targets.csv

copy/paste into a spreadsheet or note<br>--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.

Try it in 30 seconds

Install from source

go install github.com/skhell/pingtrace/cmd/pingtrace@latest<br>pingtrace help

# the headline command ping + trace + enrichment<br>pingtrace 8.8.8.8

# live MTR (Ctrl+C / q to stop)<br>pingtrace 1.1.1.1 --mtr

# bounded MTR, 10 cycles, 2s apart, exported to CSV<br>pingtrace 1.1.1.1 -m --cycles 10 --interval 2 --export ./reports

# CSV + JSON report (JSON validates against schema/pingtrace.schema.json)<br>pingtrace 8.8.8.8 --export ./reports --json

# multiple targets, a CIDR, or a file<br>pingtrace 8.8.8.8,1.1.1.1,example.com<br>pingtrace 10.0.0.0/30<br>pingtrace --file ./targets.csv

# script-friendly: pick your columns<br>pingtrace 8.8.8.8 --no-trace --columns seq,ip,time_ms,status

Run pingtrace --help for the grouped, color-coded flag reference, and pingtrace config to open an interactive TUI for tokens, DNS, and thresholds.

Operational notes

pingtrace depends on system ping and traceroute tooling being available on PATH.

On Windows, tracert is used.

On Unix-like systems, traceroute is used, with tracepath as a fallback where available.

--export without a path writes operation-specific CSV files in the current working directory.

If --export points to a .csv file path, pingtrace uses that file's directory and still writes separate ping_...csv and trace_...csv files.

Private DNS enrichment is automatically skipped if the configured server does not respond within 5 seconds.

--json writes a sibling JSON report (probe_...json for ping/trace runs, mtr__...json per MTR target) into the same directory as --export, or the current working directory when --export is omitted. The document validates against schema/pingtrace.schema.json and lists any CSVs written in its exportedFiles section.

PeeringDB and ipinfo.io enrichment is skipped for private/RFC-1918 IP addresses.

Feedback

If pingtrace saved you time in a troubleshooting session, it was worth building.

Star the project on GitHub

Report bugs or request features in Issues

Buy a coffee (or a snack for my buddy Schnauzer Tyson) if you feel like it.

About

Cross-platform ping + traceroute + MTR in one command. Static Go binary, no runtime required. DNS, PeeringDB and ipinfo.io enrichment built...

pingtrace json export ping schema github

Related Articles