当我们输入“ 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 和q
quit