如何获取输出并测试 dig 命令?

如何获取输出并测试 dig 命令?

当我们输入“ dig +short www.example.com ”命令时,我们会得到类似的结果:

www.example.com.
192.168.1.1
192.168.1.2
192.168.1.3

我想获取第一个地址并测试它是否是我想要的(192.168.1.1)

如何使用 shell 脚本获取此命令的输出,尤其是第二行?

答案1

像这样的事情会做:

$ dig +short www.google.com | head -1
74.125.225.113

但要小心,因为大多数具有多个 IP 地址的服务器都会在 DNS 级别执行某种形式的循环,因此每次运行命令时该列表通常都会轮换dig

$ dig +short www.google.com
74.125.225.116
74.125.225.112
74.125.225.113
74.125.225.114
74.125.225.115

$ dig +short www.google.com
74.125.225.115
74.125.225.116
74.125.225.112
74.125.225.113
74.125.225.114

$ dig +short www.google.com 
74.125.225.114
74.125.225.115
74.125.225.116
74.125.225.112
74.125.225.113

请注意 IP 如何在查询之间移动?这样做是为了平衡这些服务器之间的负载。

将 IP 捕获到变量中

以下命令将捕获 IP 地址的输出并将其放入 shell 变量中。

$ IP=$(dig +short www.google.com | head -1)

您可以这样确认:

$ echo $IP
74.125.225.114

答案2

干得好

dig +short  www.example.com | sed -n '2{p;q}'

-n默认情况下阻止 sed 打印其输入。2使其p;q在第 2 行执行。p代表 print 和qquit

相关内容