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

Linux下批量解析IP列表主机名及识别未解析IP的方法

解决批量反向解析IP时识别无法解析地址的问题

原脚本仅输出成功解析的主机名,无法关联对应IP,也无法标记解析失败的地址。可以通过以下方式修改脚本,同时保留IP和解析结果,明确区分所有条目的状态:

修改后的脚本

#!/usr/bin/bash
while read -r line; do
    # 跳过空行,避免无效处理
    [[ -z "$line" ]] && continue
    # 执行反向解析并捕获结果
    hostname=$(dig +noall +noidnin +answer -x "$line" | awk '{print $5}')
    # 检查dig命令的退出状态:0表示解析成功,非0表示失败
    if [[ $? -eq 0 ]]; then
        # 处理dig返回成功但无有效主机名的情况(无PTR记录)
        if [[ -z "$hostname" ]]; then
            echo "$line: 无法解析"
        else
            # 可选:去掉主机名末尾的点(部分dig返回的FQDN会带结尾点)
            # hostname=${hostname%.}
            echo "$line: $hostname"
        fi
    else
        echo "$line: 无法解析"
    fi
done < linux.hosts > outputfile

关键修改说明

  • 用read -r读取IP,避免特殊字符导致的解析异常
  • 通过dig的退出状态码($?)判断解析是否成功
  • 将IP与解析结果配对输出,方便直接对应查看
  • 额外处理"dig执行成功但无PTR记录"的边界情况
  • 跳过空行,减少无效输出

修改后,outputfile中每一行都会呈现[IP地址]: [主机名]或[IP地址]: 无法解析的格式,所有IP的解析状态一目了然。

内容的提问来源于stack exchange,提问作者M. Bueso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:27:05