【发布时间】:2025-12-30 20:30:09
【问题描述】:
我正在寻找可以从跟踪路由中提取具有最高延迟跃点的线路的脚本。理想情况下,它会逐行查看 3 个值的最大值或平均值。我怎么能这样?
这是我迄今为止尝试过的:
traceroute www.google.com | awk '{printf "%s\t%s\n", $2, $3+$4+$5; }' | sort -rgk2 | head -n1
traceroute -w10 www.google.com | awk '{printf "%s\t%s\n", $2, ($3+$4+$5)/3; }' | sort -rgk2 | head -n1
这似乎是朝着正确方向迈出的一步,除了一些从跟踪路由返回的值是 *,因此总和和平均值都提供了错误的值。
更新 更进一步:
traceroute www.cnn.com | awk '{count = 0;sum = 0;for (i=3; i<6; i++){ if ($i != "*") {sum += $i;count++;}}; printf "%s\t%s\t%s\t%s\n", $2, count, sum, sum/count }' | sort -rgk2
如果我没有第 4,5 列,现在需要拦截。有时traceroute只提供这样的3星:
17 207.88.13.153 235.649ms 234.864ms 239.316ms
18 * * *
【问题讨论】: