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

Posted Cosann

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本实现批量解析域名IP地址(支持多DNS)相关的知识,希望对你有一定的参考价值。

脚本介绍

  • 多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
```bash
#脚本文件 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,例如pxn.baxdu.com/?from=1026962h(中间有/),应该使用标准域名pxn.bxidu.com

使用案例

1. 当前目录下文件

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

3. 运行结果


心得分享

以上是关于shell脚本实现批量解析域名IP地址(支持多DNS)的主要内容,如果未能解决你的问题,请参考以下文章

批量解析域名IP地址的python脚本

如何使用shell 批量ping域名,生成一个结果文件?

Python根据域名批量获取IP地址和经纬度(2021.12.1)

Python根据域名批量获取IP地址和经纬度(2021.12.1)

Python根据域名批量获取IP地址和经纬度(2021.12.1)

python批量检查通一个集群针对同一个域名解析到不同IP地址证书的有效性