You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用脚本实现MTR批量追踪同网段主机并筛选2跳目标

我来给你详细讲讲这两个问题的实现思路和具体脚本,都是实际工作中常用的方案:

1. 用脚本实现MTR对多台主机执行路由追踪

要批量跑MTR,核心就是循环遍历目标主机列表,调用MTR的非交互式模式生成报告,还可以把结果单独保存方便后续分析。MTR的--report参数可以直接生成汇总报告,不用交互式操作,非常适合脚本调用。

这里给你一个bash脚本的例子:

#!/bin/bash

# 可以直接定义目标主机数组,或者从文件读取
TARGETS=("192.168.1.1" "172.16.10.5" "10.0.0.1")
# 如果主机很多,推荐从文件读取:TARGETS=$(cat ./hosts_list.txt)

# 循环处理每个目标主机
for host in "${TARGETS[@]}"; do
    echo "=== 正在对 $host 执行路由追踪 ==="
    # 生成MTR报告并保存到单独文件,--report-cycles指定发送的数据包数量
    mtr --report --report-cycles 10 "$host" > "mtr_result_$host.txt"
    # 同时在控制台输出结果
    cat "mtr_result_$host.txt"
    echo -e "\n"
done

脚本说明:

  • 每个主机的MTR结果会保存成mtr_result_<主机地址>.txt文件,方便后续复盘
  • 如果目标主机数量较多,把主机列表写到hosts_list.txt(每行一个主机地址),用while read host; do ... done < hosts_list.txt的方式循环会更灵活
  • 可以根据需求调整--report-cycles的数值,数值越小速度越快,但结果的准确性会略有下降
2. 扫描172.16.0.0/16网段,找出仅需2跳可达的主机

直接对172.16.0.0/16的65536个地址跑MTR效率极低,所以建议分两步走:先快速探测存活主机,再对存活主机执行MTR并解析跳数。这里用fping做快速存活探测(比原生ping快很多),再用awk解析MTR报告里的跳数。

具体脚本如下:

#!/bin/bash

# 定义目标网段
SUBNET="172.16.0.0/16"
# 临时保存存活主机的文件
ALIVE_HOSTS="/tmp/alive_hosts.txt"

# 第一步:快速探测网段内的存活主机
echo "正在探测网段 $SUBNET 内的存活主机..."
fping -a -g "$SUBNET" 2>/dev/null > "$ALIVE_HOSTS"

# 检查是否有存活主机
if [ ! -s "$ALIVE_HOSTS" ]; then
    echo "网段内未发现存活主机"
    exit 1
fi

echo "开始对存活主机执行MTR,筛选2跳可达的目标..."
echo "=== 2跳可达的主机列表 ==="

# 第二步:对每个存活主机执行MTR,解析跳数
while read host; do
    # 提取MTR报告中目标主机对应的跳数(最后一行的Hop数值)
    hop_count=$(mtr --report --report-cycles 3 "$host" | awk '/^[0-9]+/ {last_hop=$1} END {print last_hop}')
    # 判断跳数是否为2
    if [ "$hop_count" -eq 2 ]; then
        echo "$host"
    fi
done < "$ALIVE_HOSTS"

# 清理临时文件
rm "$ALIVE_HOSTS"

补充说明:

  • 如果系统没有安装fping,可以用nmap替代存活探测:nmap -sn "$SUBNET" | grep "Nmap scan report for" | awk '{print $5}' > "$ALIVE_HOSTS",只是速度会慢一些
  • 扫描/16网段耗时较长,建议后台执行脚本:./scan_script.sh > 2hop_hosts.txt &
  • 部分系统需要root权限执行MTR或fping,遇到权限问题加上sudo即可

内容的提问来源于stack exchange,提问作者user1150125

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:23:10