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

Nid*_*dal 7 shell

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

www.example.com.
192.168.1.1
192.168.1.2
192.168.1.3
Run Code Online (Sandbox Code Playgroud)

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

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

slm*_*slm 7

像这样的事情会做:

$ dig +short www.google.com | head -1
74.125.225.113
Run Code Online (Sandbox Code Playgroud)

但要小心,因为大多数具有多个 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
Run Code Online (Sandbox Code Playgroud)

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

将 IP 捕获到变量中

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

$ IP=$(dig +short www.google.com | head -1)
Run Code Online (Sandbox Code Playgroud)

您可以像这样确认这一点:

$ echo $IP
74.125.225.114
Run Code Online (Sandbox Code Playgroud)