当我们输入“ 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 获取此命令的输出,尤其是第二行?
像这样的事情会做:
$ 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 地址的输出并将其放入 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)