当前位置:网站首页>Shell脚本实现多选DNS同时批量解析域名IP地址(新更新)
Shell脚本实现多选DNS同时批量解析域名IP地址(新更新)
2022-08-02 09:41:00 【isk--cosann】
背景前文
该脚本是在原先《shell脚本实现批量解析域名IP地址(支持多DNS)》的基础上再进行了代码逻辑优化和小细节代码更新,重要变动部分如下:
增加任意多选DNS逻辑,即执行时可不选定目标DNS,只需指定DNS_File文件(默认DNS为114.114.114.114,有定制需求可自行修改)
实现代码
#!/bin/bash
#Author:cosann
#Function:批量解析域名A记录和CNAME记录脚本
#version:2.0
#Create Time:20220714
#Update Time: 20220801
#Description:
#1.支持DNSIP传参判定
#2.支持DNS解析域名文件判定
#3.自定义多选DNS(默认DNS:114.114.114.114,最多支持三个DNS解析)
clear #脚本运行时清屏
#提示脚本信息
cat <<EOF ============================================= == Welcome to the DNS resolution script ===== --------------------------------------------- #1.Author:Cosann #2.Function:批量解析域名A记录和CNAME记录脚本 #3.version:2.0 #4.Description: - 支持DNSIP传参判定 - 支持DNS解析域名文件判定 - 自定义多选DNS(默认DNS:114.114.114.114 最多支持三个DNS解析) ============================================= EOF
echo #换行
#初始化默认DNS服务器
dns=114.114.114.114
#定义DNS文本检测函数
function dns_file_cleck () {
if ! [ -f "$dns_file" ]
then
echo "$4文件错误,请检查文本文件"
exit
fi
}
#定义DNS网络检测函数
function Ping_Stat_1 (){
ping -w 1 $dns1 &> /dev/null #ping测试
if [ "`echo $?`" == 0 ]
then
return 100 #返回DNS目标网络可达数值
else
return 200 #返回DNS目标网络不可达数值
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
}
#传参检测及执行控制
if [ $# -eq "1" ]
then
dns1=$dns;dns_file=$1;
echo -e "DNS:$dns1\tDNS_File:$PWD/$dns_file\n"
dns_file_cleck #调用DNS文本检测函数
Ping_Stat_1 #DNS检测函数调用
code1=`echo $?`
elif [ $# -eq "2" ]
then
dns1=$1;dns_file=$2
echo -e "DNS:$dns1\tDNS_File:$PWD/$dns_file\n"
dns_file_cleck
Ping_Stat_1
code1=`echo $?`
echo $code1
elif [ $# -eq "3" ]
then
dns1=$1;dns2=$2;dns_file=$3
echo -e "DNS:$dns1 $dns2\tDNS_File:$PWD/$dns_file\n"
dns_file_cleck
Ping_Stat_1
code1=`echo $?`
Ping_Stat_2
code2=`echo $?`
elif [ $# -eq "4" ]
then
dns1=$1;dns2=$2;dns3=$3;dns_file=$4
echo -e "DNS:$dns1 $dns2 $dns3\tDNS_File:$PWD/$dns_file\n"
dns_file_cleck
Ping_Stat_1
code1=`echo $?`
Ping_Stat_2
code2=`echo $?`
Ping_Stat_3
code3=`echo $?`
else
echo -e "Usage: $0 dns1 dns2 dns3 dns_file"
exit
fi
echo -e "》》》DNS连通性检测中,请稍等》》》"
#DNS解析控制及解析功能实现
if [ "$code1" == 100 ];then
echo -e "-------------------------------------------\n"
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"
elif [ "$code1" == 200 ];then
echo -e "DNS:$dns1 NG" && echo -e "目标DNS网络不可达!\n"
fi
if [ "$code2" == 100 ];then
echo -e "-------------------------------------------\n"
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"
elif [ "$code2" == 200 ];then
echo -e "DNS:$dns2 NG" && echo -e "目标DNS网络不可达!\n"
fi
if [ "$code3" == 100 ];then
echo -e "-------------------------------------------\n"
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
elif [ "$code3" == 200 ];then
echo -e "DNS:$dns3 NG" && echo -e "目标DNS网络不可达!\n"
fi
exit 0
使用方法
准备脚本文件和DNS_File文件
DNS_File文件内容格式

1. 只指定DNS_File文件运行脚本(使用脚本默认设定的114.114.114.114进行解析)
./dns.sh host
2. 指定一个DNS服务器运行脚本
./dns.sh 8.8.8.8 host
3. 指定两个DNS服务器运行脚本
./dns.sh 8.8.8.8 114.114.114.114 host
4. 指定三个DNS服务器运行脚本
./dns.sh 8.8.8.8 114.114.114.114 192.168.222.1 host
结果示例

欢迎转载,转载请注明出处,谢谢~
边栏推荐
- Facebook自动化数据分析方案,广告投放省心省力
- 【Redis】通用命令
- Spend 2 hours a day to make up for Tencent T8, play 688 pages of SSM framework and Redis, and successfully land on Meituan
- 8月份的.NET Conf 活动 专注于 .NET MAUI
- 软件测试与质量 之白盒测试
- The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes
- 读博一年后对机器学习工程的思考
- ABAP 和json转换的方法
- 在全志V853开发板试编译QT测试
- Talk about the understanding of Volatile
猜你喜欢

曲折的tensorflow安装过程(Tensorflow 安装问题的解决)

Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’

转转反爬攻防战

QT专题:事件机制event基础篇

State Management in Jetpack Compose

单词接龙 II

Naive Bayesian Method of Li Hang's "Statistical Learning Methods" Notes

It's time for bank data people who are driven crazy by reporting requirements to give up using Excel for reporting

js防抖函数和函数节流的应用场景

瑞吉外卖项目剩余功能补充
随机推荐
Nodejs3day(express简介,express创建基本Web服务器,托管静态资源,nodemon下载及出现的问题,中间件,编写GET,POST,JSONP接口)
Facebook自动化数据分析方案,广告投放省心省力
Chapter 15 Generics
瑞吉外卖项目剩余功能补充
【技术分享】OSPFv3基本原理
C语言volatile关键字、内嵌汇编volatile与编译器的爱恨情仇
牛客网项目2.7开发注册功能 报错This application has no explicit mapping for /error......
Rust 从入门到精通03-helloworld
百战RHCE(第四十七战:运维工程师必会技-Ansible学习2-Ansible安装配置练习环境)
The perceptron perceptron of Li Hang's "Statistical Learning Methods" notes
【新版干货书】深度伪造 (DeepFakes):创造,检测和影响
软件测试之发现和解决bug
读博一年后对机器学习工程的思考
【微信小程序】本地服务页面案例实现
小程序云开发(十):渐变与动画
Spend 2 hours a day to make up for Tencent T8, play 688 pages of SSM framework and Redis, and successfully land on Meituan
[Concurrent programming] - Thread pool uses DiscardOldestPolicy strategy, DiscardPolicy strategy
图形化矩阵,矩阵到底长什么样?
Pytorch的LSTM参数解释
1对1视频源码——快速实现短视频功能提升竞争力