shell脚本实现批量解析域名IP地址(支持多DNS)

14 篇文章 0 订阅

脚本介绍

  • 多DNS解析(目前支持最多3个目标DNS服务器)
  • 支持解析域名的A记录和CNAME记录
  • 自定义DNS,内网DNS服务器,或公网DNS
  • 多域名同时从目标DNS解析记录(脚本从文本读取域名列表)

实现代码

#!/bin/bash
#Author:cosann
#Create Time:20220714
#Description:批量解析域名A记录和CNAME记录脚本

#初始化DNS服务器
dns1=$1
dns2=$2
dns3=$3

#初始化解析库
dns_file=$4

#DNS检测函数定义
function Ping_Stat_1 (){
    ping -w 1 $dns1 &> /dev/null
    if [ "`echo $?`" == 0 ]
    then
        return 100
    else
        return 200
    fi
}
function Ping_Stat_2 (){
    ping -w 1 $dns2 &> /dev/null
    if [ "`echo $?`" == 0 ]
    then
        return 100
    else
        return 200
    fi
}
function Ping_Stat_3 (){
    ping -w 1 $dns3 &> /dev/null
    if [ "`echo $?`" == 0 ]
    then
        return 100
    else
        return 200
    fi
}

echo -e "DNS连通性检测中,请稍等"

#DNS检测函数调用
Ping_Stat_1
code1=`echo $?`

Ping_Stat_2
code2=`echo $?`

Ping_Stat_3
code3=`echo $?`


#DNS解析控制及解析功能实现
if [ "$code1" == 100 ];then
    echo -e "DNS:$dns1 OK\n"
    echo -e "DNS1(IP:$dns1)"
    echo -e "域名\t\t\tA记录/CNAME 记录"
    cat $dns_file | while read line
    do
        dig @$dns1  $line A +short | sed "s/^/$line\t\t/g" 
    done
    echo -e "\n"
else
    echo -e "DNS:$dns1 NG" && echo -e "目标DNS网络不可达!"
fi

if [ "$code2" == 100 ];then
    echo -e "DNS:$dns2 OK\n"
    echo -e "DNS2(IP:$dns2)"
    echo -e "域名\t\t\tA记录/CNAME记录"
    cat $dns_file | while read line
    do
        dig @$dns2  $line A +short | sed "s/^/$line\t\t/g" 
    done
    echo -e "\n"
else
    echo -e "DNS:$dns2 NG" && echo -e "目标DNS网络不可达!"
fi 

if [ "$code3" == 100 ];then
    echo -e "DNS:$dns3 OK\n"
    echo -e "DNS3(IP:$dns3)"
    echo -e "域名\t\t\tA记录/CNAME记录"
    cat $dns_file | while read line
    do
        dig @$dns3  $line A +short  | sed "s/^/$line\t\t/g" 
    done
else
    echo -e "DNS:$dns3 NG" && echo -e "目标DNS网络不可达!"
fi

使用方法

例如脚本文件为dns_get.sh

#脚本文件 DNS1 DNS2 DNS3 存放域名的文件
./dns_get.sh dns1 dns2 dns3 dns_list

#示例(当前目录下有存放域名记录的文件dns_list.txt)
./dns_get.sh 114.114.114.114 8.8.8.8 192.168.1.1 dns_list.txt
关于域名文本文件
1. 如果域名文本文件和脚本文件在同一目录,可以使用上面方法运行脚本,否则使用绝对路径指定域名文本文件
2.域名文件格式注意不要使用URL,例如pan.baxdu.com/?from=1026962h(中间有/),应该使用标准域名pan.baidu.com

使用案例

1. 当前目录下文件

image.png

2. 运行脚本(脚本需要有执行权限)

image.png

3. 运行结果

image.png


心得分享

如果有大量的域名需要解析,可以使用该脚本一键解决,该脚本目前只是实现了一些基本功能,还有很多可以扩展的地方,例如逆向解析PTR记录,如果你有想法,欢迎提出。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值