Pingtrace
一个跨平台命令行网络诊断工具,把 ping、traceroute、MTR、TCP 端口扫描和 IP 信息查询整合到一个静态 Go 二进制文件里。
简要说明#
Pingtrace 是一个网络诊断命令行工具,把 ping、traceroute、MTR、TCP 端口扫描和 IP 信息查询整合到一个二进制文件里。它用 Go 编写,静态编译,单文件部署,不需要运行时环境或依赖管理。
这类场景熟悉网络排查的人应该不陌生:先 ping 看通不通,再 traceroute 看路由路径,中间还要记 IP、查 DNS、翻 PeeringDB 看 ASN,给每个跳做记录,最后手工整理到表格或报告里。Pingtrace 的设计目标是把这个流程压缩成一个命令。

功能#
Pingtrace 涵盖的主要诊断能力:
ping + traceroute + MTR 三合一。 基础使用方式和系统自带 ping 一样,但会同时显示延迟、跳数和路由信息。加上 --mtr 参数后进入实时模式,持续统计每一跳的延迟和丢包,用 Ctrl+C 或 q 退出。
TCP 端口扫描。 用 --ports 参数对目标做 TCP connect 扫描,不需要 root 权限。端口号自动解析为 IANA 服务名,适合快速确认某个服务端口是否可达。
批量目标处理。 支持 CIDR 网段格式,pingtrace 10.0.0.0/24 直接扫描整个子网。也可以用 --file targets.csv 从文件读入目标列表,适合从 CMDB 或资产清单导出后批量检查。
IP 信息自动富集。 每次运行会自动做 DNS 反向解析,同时查询 PeeringDB 和 ipinfo.io 获取每一跳的 ASN、运营商和地理位置。不需要在 ping 和 dig 之间来回切换。
导出报告。 使用 --export ./reports 生成 CSV 报告,时间戳按 UTC 命名。配合 --json 可同时输出 JSON 格式,方便接入监控系统或后续处理。CIDR 网段扫描默认为自动导出。
安装#
Pingtrace 提供了三种安装方式:
- macOS:
brew tap skhell/pingtrace && brew install pingtrace - Linux:从 GitHub Releases 下载
.deb或.rpm包安装 - 任意平台(需 Go 工具链):
go install github.com/skhell/pingtrace/cmd/pingtrace@latest
Windows 用户可以通过 go install 方式安装,也可以直接从 Releases 页面下载对应平台的二进制文件。由于是静态编译单文件,下载后放到 PATH 路径下就能用。
与同类工具的比较#
传统的网络诊断工具分布在不同操作系统和包管理器里。mtr 是 Linux 和 macOS 的经典选择,但 Windows 上没有原生版本;WinMTR 填补了 Windows 的空白,但功能基本停在 GUI 版本的 traceroute + ping 组合,不支持端口扫描或批量目标。Trippy 是一个现代化的 MTR 替代品,有丰富的 TUI 可视化,但它的定位仍然是深度路由分析,不是多工具整合。
Pingtrace 和这些工具不太一样。它的出发点不是替代 mtr 或做出更好看的 TUI,而是把这些分散在不同场景里的诊断操作收敛到同一个命令里。如果你在做故障排查时既需要 ping 确认可达性、又想看路由路径、还要确认特定端口的状态、最后还要导出数据,Pingtrace 一个命令就能把这几步做完,不需要在不同终端窗口和工具之间切换。
当然,这也意味着在单项能力上它未必更深。mtr 和 Trippy 在路由分析的细节呈现上更完整,nmap 在端口扫描的深度上远超 Pingtrace。Pingtrace 的侧重点始终是效率和广度。
使用场景#
一个典型的使用流程是:排查网络问题时,先用 pingtrace 目标IP 一条命令拿到可达性、路由路径和每一跳的信息,确认问题出在哪里后,用 --mtr 追踪丢包,用 --ports 验证服务端口,最后用 --export 导出 CSV 交给同事或留在工单里。
另一种常见场景是批量扫描。监控平台或资产清单更新后,用 pingtrace 192.168.0.0/24 --export ./reports 一次扫描整个网段,输出中自动包含 DNS、ASN 和地理位置信息,省去了手动查 IP 的工作。
注意事项#
项目目前处于早期阶段,GitHub 星标不多,社区和文档还不算完善。作者从 Node.js 版本重写到 Go 的核心原因是分发问题——原生二进制比 npm 依赖链更适合命令行工具。这种判断本身是合理的,但用户量和生态反馈还需要时间增长。
端口扫描使用 TCP connect 方式,可达性测试依赖系统自带的 ping 和 traceroute 命令。Windows 上需要确认系统 ping 和 tracert 命令的正常运行。IP 富集功能依赖外部 API(ipinfo.io 和 PeeringDB),离线环境下这部分信息不可用。