#!/bin/bash
# 定义需要巡检的DNS服务器地址
DNS_SERVERS=("8.8.8.8" "114.114.114.114")
# 定义需要解析的域名列表
DOMAINS=("example.com" "google.com" "baidu.com")
# 遍历DNS服务器和域名列表,进行解析测试
for DNS_SERVER in "${DNS_SERVERS[@]}"
do
for DOMAIN in "${DOMAINS[@]}"
do
# 使用dig命令进行DNS解析,并获取解析结果和响应时间
DIG_RESULT=$(dig +time=1 +tries=1 @$DNS_SERVER $DOMAIN)
DIG_STATUS=$?
DIG_TIME=$(echo "$DIG_RESULT" | grep "Query time:" | awk '{print $4}')
# 判断解析结果和响应时间是否正常,并输出结果
if [ $DIG_STATUS -eq 0 ] && [ "$DIG_TIME" != "" ]
then
echo "DNS Server: $DNS_SERVER, Domain: $DOMAIN, Result: Success, Response Time: ${DIG_TIME}ms"
else
echo "DNS Server: $DNS_SERVER, Domain: $DOMAIN, Result: Failed"
fi
done
done
这个脚本通过使用dig命令进行DNS解析测试,并输出解析结果和响应时间。在脚本中,需要巡检的DNS服务器地址和需要解析的域名列表都被定义为数组,然后使用嵌套的for循环遍历这些值,并使用dig命令进行DNS解析测试。如果解析结果和响应时间都正常,则输出成功的信息,否则输出失败的信息。
在使用脚本时,可以根据实际情况修改需要巡检的DNS服务器地址和需要解析的域名列表,以及调整dig命令的参数来满足特定的需求。例如,可以增加重试次数和超时时间,或者添加其他的dig命令参数。
需要注意的是,DNS解析结果可能会受到网络环境和DNS服务器本身的影响,因此在使用脚本时,需要进行一定的测试和验证,以确认脚本的可靠性和正确性。