使用脚本让 dig 命令更高效!

介绍

大家好,我是Kita,一名大三的工程师。dig
(Domain Information Groper,域名信息查询工具)命令常用于检查域名设置,但日常使用中该如何使用呢?
今天,我想介绍一些使用脚本来提高dig命令效率的技巧!

挖掘命令

重申一下,dig(域名信息查询工具)命令是一个非常实用的工具,对于基础设施工程师来说至关重要,因为它能够向 DNS 服务器发送诸如“此域名的 IP 地址是什么?”和“邮件服务器在哪里?”之类的查询。
我们已经博客dig 命令

虽然 dig 命令很有用,但它有以下两个缺点:

1.类型指定的限制
dig 每次执行只能查询一种记录类型,因此即使您像这样列出“ dig domain A MX ”,也只会查询最后指定的 MX 记录。
所以,如果要检查多种类型,需要分别运行每种类型的命令。

2. ANY 查询已沦为形式
以前,您可以通过指定类似
dig beyondjapan.com ANY 互联网工程任务组 (IETF) 制定的RFC8482实现通常只会对 ANY 查询返回最小响应。

[任何失败案例示例]

beyondjapan.com. 3600 IN HINFO "RFC8482" "

* HINFO "RFC8482" 是服务器的拒绝响应,表示“我们不提供批量响应,所以请单独提出请求”。

使用脚本自动进行连续查询

如果 dig 命令无法一次性检索所有记录,通常需要手动多次输入该命令。
然而,随着待搜索记录数量的增加,这种方法会变得更加耗时,而且更容易出错,例如漏选某个记录。

因此,这次我们将介绍一种分别执行“调查项目(txt) ”和“可执行程序(脚本) ”的方法,这将省去您一遍又一遍手动重新输入命令的麻烦,并允许您一次性准确地检索多个记录!

如何执行脚本

① 创建要调查的记录列表。
首先,在本地环境(Ubuntu / WSL 等)中,创建一个名为 records.txt 的文本文件,其中列出了目标域中要调查的记录类型,每种类型占一行。然后,进入该目录并按如下方式进行准备:

vi records.txt

■ records.txt 的内容

A MX TXT NS

② 创建执行脚本
接下来,创建一个脚本 (dig-check.sh),该脚本会自动读取上面的列表 (records.txt) 并持续运行 dig 命令。
*由于 records.txt 和 dig-check.sh 都是通过在脚本中指定文件名 records.txt 来创建的,因此请将它们创建在同一目录下,以防止出现读取错误(文件未找到)!

vi dig-check.sh

■ dig-check.sh 的内容

#!/bin/bash DOMAIN=$1 # 如果未指定域名,则显示错误 if [ -z "$DOMAIN" ]; then echo "用法:./dig-check.sh [域名]" exit 1 fi echo "--- 域名:$DOMAIN ---" # 逐行读取并执行 records.txt while read type; do # 如果存在空行则跳过 [ -z "$type" ] && continue echo ""[$type 记录]" dig $DOMAIN $type +short echo "" done < records.txt

③ 授予脚本运行权限。
在②中创建的脚本(dig-check.sh)尚未被识别为可执行的文件。

■脚本(dig-check.sh)创建后的权限状态

-rw-r--r-- 1 root root 453 2月 26 17:59 dig-check.sh

输入以下命令授予权限:

chmod +x dig-check.sh

■ 调整后脚本 (dig-check.sh) 的权限状态

-rwxr-xr-x 1 root root 453 2月26日17:59 dig-check.sh

*由于 records.txt 是一个文本文件,因此无需进行此操作。

文本文件(records.txt):脚本仅“读取”其内容,因此可以使用标准权限(-rw-r--r--)运行。
脚本文件(dig-check.sh):必须设置权限,因为操作系统需要获得执行权限(+x)才能将该脚本作为程序运行。

④ 指定域名并执行。
这次,我们以“example.com”为例执行。
现在,脚本会一次性输出records.txt文件中的所有内容,这样您就可以更快地检查设置!
* ./ 表示“在当前目录下执行文件”,因此如果您当前位于其他目录,请在执行前切换到目标目录。

./dig-check.sh example.com

■ 输出结果

--- 域名:example.com --- [A 记录] 104.18.27.120 104.18.26.120 [MX 记录] 0 . [TXT 记录] "v=spf1 -all" "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9" [NS 记录] elliott.ns.cloudflare.com. hera.ns.cloudflare.com.

脚本执行注意事项

这里介绍的批量采集脚本只是一个按顺序检查 records.txt 文件中列出的项目的工具。因此,虽然它很方便,但请注意以下两点!

■找不到未知记录
例如,如果您只在 records.txt 中列出“A/MX”,即使目标域设置了 TXT 记录,也不会显示这些记录。

■无法检查“所有已注册内容”
由于 DNS 的结构限制,很难从服务器端获取完整的“已配置记录列表”。
因此,此方法并非旨在“在不知道已注册内容的情况下获取所有设置”,而是比手动检查更快、更准确地检查多个预先指定的记录。

结论

“以前你都是一个一个地输入命令”——用 dig 命令检查多个设置。只要稍微动动脑筋,把 txt 文件和脚本分开,就能避免手动执行时漏掉检查等操作错误,还能节省大量时间!

这次我们介绍了检查单个域的多个设置的示例,但在实际应用中,您可能需要检查您管理的全部 10 个域。
在这种情况下,您可以准备一个额外的域列表(domains.txt),并使用双循环运行脚本。

我希望以后能提供更详细的介绍!
希望这篇文章对您有所帮助。
感谢您阅读到最后。

如果您觉得这篇文章有用,请点击【点赞】!
5
加载中...
5票,平均分:1.00/15
17
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

我经常在录音棚里演奏乐器和练习。

我也喜欢看漫画和看电影(尤其是恐怖电影)。