logo NodeSeekbeta

写了一个检测NAT线路和延迟的脚本

写了一个检测NAT线路 和延迟的,NQ的一跑就卡死
这个低内存也能用
填上你们城市的ip就行
或者填自己的 比较慢

echo '#!/bin/sh

TARGETS="
电信_CT|你们城市的ip|电信
移动_CM|你们城市的ip|移动
联通_CU|你们城市的ip|联通
"

COUNT=100
REPORT="line_quality_$(date +%F_%H-%M-%S).log"

install_deps() {
    need=""
    command -v ping >/dev/null 2>&1 || need="$need iputils"
    command -v mtr >/dev/null 2>&1 || need="$need mtr"
    command -v traceroute >/dev/null 2>&1 || need="$need traceroute"
    command -v curl >/dev/null 2>&1 || need="$need curl"

    [ -z "$need" ] && return 0

    echo "Installing dependencies: $need"

    if command -v apt-get >/dev/null 2>&1; then
        apt-get update
        apt-get install -y iputils-ping mtr-tiny traceroute curl
    elif command -v apk >/dev/null 2>&1; then
        apk update
        apk add iputils mtr traceroute curl
    elif command -v yum >/dev/null 2>&1; then
        yum install -y iputils mtr traceroute curl
    elif command -v dnf >/dev/null 2>&1; then
        dnf install -y iputils mtr traceroute curl
    else
        echo "No supported package manager found. Please install ping/mtr/traceroute/curl manually."
    fi
}

judge_line() {
    FILE="$1"
    ISP="$2"

    if grep -qi "AS4809\|CN2\|59.43" "$FILE"; then
        echo "线路判断: 电信 CN2 / 精品倾向"
    elif grep -qi "AS58807\|CMIN2\|223.120\|223.121" "$FILE"; then
        echo "线路判断: 移动 CMI / CMIN2 倾向"
    elif grep -qi "AS9929\|A网\|CUII\|218.105" "$FILE"; then
        echo "线路判断: 联通 9929 / 精品倾向"
    elif grep -qi "AS4837\|219.158" "$FILE"; then
        echo "线路判断: 联通 4837 普通骨干倾向"
    elif grep -qi "AS4134\|202.97" "$FILE"; then
        echo "线路判断: 电信 163 普通骨干倾向"
    elif grep -qi "AS58453\|AS9808\|221.183" "$FILE"; then
        echo "线路判断: 移动普通骨干 / CMI 倾向"
    else
        echo "线路判断: 未识别,需要人工看 AS 路由"
    fi
}

install_deps

{
echo "=================================================="
echo "三网延迟 / 抖动 / 丢包 / 回程线路测试"
echo "生成时间: $(date)"
echo "本机出口 IPv4: $(curl -4 -s --max-time 5 ip.sb 2>/dev/null || echo unknown)"
echo "本机出口 IPv6: $(curl -6 -s --max-time 5 ip.sb 2>/dev/null || echo unknown)"
echo "=================================================="
echo ""
echo "说明:"
echo "1. 本脚本在服务器本机运行,测的是服务器到三网目标 IP 的出站/回程质量。"
echo "2. 真正去程,即国内三网到你的服务器,需要国内探针或 Looking Glass 反向测试。"
echo "3. 精品线路判断基于 AS/路由特征,只能作为初筛,不等于运营商官方结论。"
echo ""
} | tee "$REPORT"

echo "$TARGETS" | while IFS="|" read NAME IP ISP
do
    [ -z "$IP" ] && continue

    TMP="/tmp/mtr_${IP}.txt"

    {
    echo ""
    echo "=================================================="
    echo "$NAME - $IP"
    echo "=================================================="

    echo ""
    echo "[1] Ping 延迟 / 丢包 / 抖动"
    ping -c "$COUNT" -i 0.2 "$IP" 2>/dev/null | tee /tmp/ping_${IP}.txt

    echo ""
    echo "[2] MTR 回程质量,$COUNT 包"
    if mtr --help 2>&1 | grep -q -- "-z"; then
        mtr -rwzc "$COUNT" "$IP" | tee "$TMP"
    else
        mtr -rwc "$COUNT" "$IP" | tee "$TMP"
    fi

    echo ""
    echo "[3] Traceroute 路由路径"
    traceroute -n "$IP" 2>/dev/null || traceroute "$IP"

    echo ""
    echo "[4] 精品线路初步判断"
    judge_line "$TMP" "$ISP"

    echo ""
    echo "[5] 读数标准"
    echo "丢包: 0% 最好,1%-3% 可观察,>5% 明显异常"
    echo "平均延迟: Avg 越低越好"
    echo "抖动: MTR 的 StDev 越低越好,<3ms 优秀,3-10ms 正常,>10ms 不稳"
    echo "Worst: 偶发尖峰越高,说明拥塞或抖动越明显"

    } | tee -a "$REPORT"
done

echo ""
echo "测试完成,报告文件: $REPORT"
' > line_quality.sh && chmod +x line_quality.sh && ./line_quality.sh
  • 跑一下看看

  • 感谢分享,如果做成一键curl脚本的更好

  • 我之前也是因为独角鲸限制路由追踪。也弄了一个类似nexttrace

  • 感谢分享,跑一下看看

  • 一键curl脚本的更好。

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60081位seeker

🎉欢迎新用户🎉