首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash中使用nslookup验证DNS配置是否正确?

问如何在bash中使用nslookup验证DNS配置是否正确?
EN

Stack Overflow用户
提问于 2016-12-09 20:00:36
回答 3查看 23.5K关注 0票数 5

我主要想通过使用nslookup来检测是否在机器上正确配置了DNS。遗憾的是,当nslookup查找条目失败时,它似乎仍然返回成功错误代码。此外,不同的查询可能会返回多个结果,这也使得测试变得更加困难。

因此,我想编写一个bash代码片段,如果dns条目解析成功,该代码段将返回成功。我不关心我是否得到了多个结果。

示例nslookup -type=srv _ldap._tcp.DOMAIN.COM

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-10 00:53:34

正确的解决方案应该是使用dig并测试是否有任何带有short选项的文本:

代码语言:javascript
复制
[ "$(dig +short -t srv _ldap._tcp.example.com.)" ] && echo "got answer"
票数 14
EN

Stack Overflow用户

发布于 2016-12-09 20:44:30

同意这一事实,nslookup,对成功和失败的DNS查找都返回0。您可以实现您尝试执行的操作,但需要对命令的输出进行后处理。

您可以创建一个dnsLookup.sh脚本,如下所示

代码语言:javascript
复制
#!/bin/bash

# Checking for the resolved IP address from the end of the command output. Refer
# the normal command output of nslookup to understand why.

resolvedIP=$(nslookup "$1" | awk -F':' '/^Address: / { matched = 1 } matched { print $2}' | xargs)

# Deciding the lookup status by checking the variable has a valid IP string

[[ -z "$resolvedIP" ]] && echo "$1" lookup failure || echo "$1" resolved to "$resolvedIP"

运行一些示例URL

代码语言:javascript
复制
dudeOnMac:~$ ./dnsLookup.sh www.google.com
www.google.com resolved to 206.78.111.12
dudeOnMac:~$ ./dnsLookup.sh www.googlejunkaddress.com
www.googlejunkaddress.com lookup failure
票数 5
EN

Stack Overflow用户

发布于 2016-12-09 22:14:05

诀窍是使用host | grep命令而不是nslookup命令,因为这个命令没有那么冗长,这使得使用grep进行解析要容易得多。

如果DNS解析失败,以下命令将失败:

代码语言:javascript
复制
host -t srv _ldap._tcp.EXAMPLE.COM | grep "has SRV record" >/dev/null ||     {
    echo "FATAL: Unable to locate ldap servers, probably you are not on intranet or your DNS servers are broken."
    exit 2
}

注意:正如您可以看到我的示例,它特定于SRV查询,但是您可以很容易地进行调整,更改参数和grep过滤器,使其与其他查询一起工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41060027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档