PsPing 学习笔记(14.7):一条龙网络体检脚本——连通性、延迟、带宽全都要

PsPing 学习笔记(14.7):一条龙网络体检脚本------连通性、延迟、带宽全都要

  • [PsPing 学习笔记(14.7):一条龙网络体检脚本------连通性、延迟、带宽全都要](#PsPing 学习笔记(14.7):一条龙网络体检脚本——连通性、延迟、带宽全都要)

PsPing 学习笔记(14.7):一条龙网络体检脚本------连通性、延迟、带宽全都要

适用人群:想把前面 14.1--14.6 全部串起来,做一个**"一键网络体检脚本"**的运维 / 测试 / 开发同学。

你会收获:

  • 一套从 ICMP、TCP 到延迟分布、带宽压测的完整流程;
  • 可直接改名上岗的 PsPing 网络巡检脚本
  • 如何把结果留痕,用于排障报告 & 性能基线。

一、我们已经有什么?先盘一下本章能力树

前面几篇已经分别把 PsPing 拆开讲过:

小节 能力点 说明
14.1 ICMP Ping 基础连通性与 RTT 观测(类似系统 ping,但更可控)
14.2 TCP Ping 指定端口的连通性 & 应用栈可达性检查
14.3 服务器模式 一端作为"回声服务器",配合延迟/带宽测试
14.4 TCP/UDP 延迟测试 更贴近真实请求链路的 RTT 测试
14.5 TCP/UDP 带宽测试 单条链路吞吐能力评估
14.6 延迟直方图 延迟分布 + 抖动可视化分析

本篇就是把这些能力打包成一个核心目标:

一条命令 / 一个脚本,给出一段时间内的网络体检报告:
"通不通?多快?稳不稳?能跑多少带宽?"


二、网络体检的一般流程怎么设计?

为了避免"测着测着就把自己打死",先设计一个合理流程:

  1. 基础连通性
    • ICMP Ping:能不能到?丢包率、最小/最大/平均延迟如何?
  2. 服务可达性
    • TCP Ping 指定端口:80/443/1433/3306 等,确认"应用栈"也通。
  3. 延迟质量
    • TCP 延迟测试(固定端口),配合直方图看抖动 & 长尾。
  4. 带宽能力(可选,高风险)
    • 在可控时间窗口,对指定端口做 TCP 带宽压测。
  5. 留档 & 对比
    • 输出写入日志文件,按日期 / 环境保留,便于之后 Compare。

三、示例:一个"轻量级"网络体检脚本(ICMP + TCP + 延迟)

下面是一个示例 PowerShell 版(你也可以改成 .bat),对单个目标做基础巡检。

3.1 脚本示例:psping_healthcheck.ps1

powershell 复制代码
param(
    [string]$Target = "www.example.com",
    [int]$TcpPort = 443,
    [int]$Count  = 100
)

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$logDir = ".\psping_logs"
$newDir = New-Item -ItemType Directory -Path $logDir -Force
$logFile = Join-Path $logDir "psping_${Target}_$timestamp.log"

Write-Host "== PsPing 网络体检 =="
Write-Host "目标: $Target, TCP 端口: $TcpPort, 次数: $Count"
Write-Host "日志: $logFile"
Write-Host ""

# 1. ICMP Ping
"===== ICMP Ping ($Target) =====" | Tee-Object -FilePath $logFile
psping -n $Count $Target | Tee-Object -FilePath $logFile -Append

# 2. TCP Ping
"`n===== TCP Ping ($Target:$TcpPort) =====" | Tee-Object -FilePath $logFile -Append
psping -n $Count $Target:$TcpPort | Tee-Object -FilePath $logFile -Append

# 3. TCP 延迟 + 直方图
"`n===== TCP 延迟 + 直方图 ($Target:$TcpPort) =====" | Tee-Object -FilePath $logFile -Append
psping -n $Count -h $Target:$TcpPort | Tee-Object -FilePath $logFile -Append

Write-Host "`n检测完成,可查看日志:$logFile"

使用方法:

powershell 复制代码
# 默认目标
.\psping_healthcheck.ps1

# 指定目标与端口
.\psping_healthcheck.ps1 -Target "10.0.0.5" -TcpPort 1433 -Count 200

你会在 .\psping_logs 下得到一份按时间戳命名的 log,里面包含:

  • ICMP 结果(丢包、min/max/avg RTT)
  • TCP 结果(端口可达性 & RTT)
  • TCP 延迟直方图(抖动 & 长尾分布)

四、带宽测试怎么安全地加进去?

带宽压测天然有一点"暴力",要加几道保险:

  • 只在测试环境或变更窗口使用;
  • 限制压测时间(比如 10 秒 / 30 秒);
  • 提前告知网络团队:要冲一冲。

4.1 服务器端(接收端)启动 PsPing server

在目标机器上(比如 10.0.0.10):

bash 复制代码
# 启动 TCP 端口 5001,作为带宽测试服务器
psping -s 10.0.0.10:5001

保持窗口不关。

4.2 客户端发起带宽测试

在你的运维机上:

bash 复制代码
# 压测 30 秒 TCP 带宽
psping -b -t -n 30 10.0.0.10:5001

组合含义:

  • -b:带宽模式(bandwidth)
  • -t:持续模式(直到计数或时间结束)
  • -n 30:持续 30 秒(在带宽模式中,-n 变成"持续时间")

你可以把这个也包装到巡检脚本中,加一个开关参数,比如:

powershell 复制代码
param(
    [switch]$DoBandwidthTest
)

if ($DoBandwidthTest) {
    "`n===== TCP 带宽测试 ($Target:$TcpPort) =====" | Tee-Object -FilePath $logFile -Append
    psping -b -t -n 30 $Target:$TcpPort | Tee-Object -FilePath $logFile -Append
}

五、如何把日志变成"可读"的结果?

体检脚本出来的是一大坨文本,怎么快速理解?

5.1 最重要的几行

在每段 PsPing 输出中,重点看这些信息:

  • Lost = x (y% loss) → 丢包率
  • Minimum = ...ms, Maximum = ...ms, Average = ...ms → 延迟基线
  • 直方图中:
    • 0--20ms 区间占比?
    • 50ms 以上区间的样本数?

对于带宽测试:

  • 输出中通常会有类似 x.x Mbytes/secx.x Mbits/sec 的统计;
  • 作为链路能力的一个"下限参考"。

5.2 建议在博客中这样呈现

你在 CSDN 写"实战总结"类文章时,可以:

  1. 从日志中摘出摘要数字,整理成表格:

    markdown 复制代码
    | 场景         | 丢包率 | 最小延迟 | 最大延迟 | 平均延迟 | 备注 |
    |--------------|--------|----------|----------|----------|------|
    | 办公网 -> STL | 0%     | 3ms      | 15ms     | 5ms      | 白天高峰 |
    | 办公网 -> BJ  | 0%     | 10ms     | 80ms     | 25ms     | 有长尾  |
  2. 用一张图描述直方图分布(手画/Excel/脚本画图都行);

  3. 带宽测试结果可以单独给一张图,配一句结论:

    在 30 秒压测期间,稳定在 90~95 Mbps 左右,接近百兆上限,适合备份/同步业务。


六、把 PsPing 体检融入日常运维

一些建议,方便你写在文章结尾当"最佳实践":

  • 固定脚本 + 固定参数:同一个环境用一套固定脚本,方便长期对比。
  • 按时间档收集:早高峰、午间、夜间各跑一次,观察抖动差异。
  • 配合监控系统
    • 可以用计划任务定时跑 psping -q,把 summary 结果采集进监控;
    • 或者用日志采集器把日志打到 ELK / Loki / Splunk 里分析。
  • 出问题先跑一遍
    • 发现服务"偶发卡顿"时,先跑一轮体检;
    • 后续排查可以拿这次结果和"健康时期"的结果对比。

七、你可以写在 CSDN 文章里的"收尾段"

示例收尾话术,方便你直接复用/改写:

这一篇我把 PsPing 在第 14 章拆散的几种能力------ICMP、TCP、延迟测试、带宽测试、直方图------重新装进一个"网络体检脚本"里。

在日常运维里,我更推荐把这套脚本当成"温度计":环境一有异常,不要先吵"是网的问题还是应用的问题",先用 PsPing 量一量------通不通、多快、稳不稳,数据会说话。

到这里,第 14 章围绕 PsPing 的学习笔记就完全闭环了。

下一步,你可以考虑把这些脚本接到 PowerShell、批处理、甚至 Ansible / SaltStack 里,变成真正可复用的网络诊断工具箱

相关推荐
weixin_462446233 小时前
Python 使用 Tkinter + openpyxl 处理 Excel 文件并显示实时进度条
python·excel·tkinter
2501_941877133 小时前
大规模系统稳定性建设方法论与工程实践分享
java·开发语言
2501_941820494 小时前
面向零信任安全与最小权限模型的互联网系统防护设计思路与多语言工程实践分享
开发语言·leetcode·rabbitmq
彩色面团儿4 小时前
Pytest框架测试用例分析(测试笔记二)
笔记·测试用例·pytest
浩瀚地学4 小时前
【Java】面向对象进阶-接口
java·开发语言·经验分享·笔记·学习
2501_941802484 小时前
面向微服务限流、熔断与降级协同的互联网系统高可用架构与多语言工程实践分享
开发语言·python
xwz小王子4 小时前
TRO 综述:面向多模态示教机器人学习的深度生成模型
学习·机器人
swan4164 小时前
SCAU期末笔记 - 区块链原理与技术主观题库
笔记·区块链
2501_941875284 小时前
分布式系统中的安全权限与审计工程实践方法论经验总结与多语言示例解析分享
开发语言·rabbitmq
强子感冒了4 小时前
Java Map学习笔记:HashMap、LinkedHashMap 与 TreeMap 的核心使用与区别
java·笔记·学习