如何从 DNS 查询中仅提取 IP 地址

dot*_*dot 10 bash dns dig

我想知道如何从 DNS / dig 查询中仅提取 IP 地址。我正在运行的查询如下所示:

lab-1:/var/# dig +answer smtp.mydomain.net +short   
smtp.ggs.mydomain.net
10.11.11.11
Run Code Online (Sandbox Code Playgroud)

我希望能够只获得返回的 IP 地址。我目前正在使用 bash 管道和 awk 命令。但到目前为止,我尝试过的一切都没有奏效。

谢谢。

dha*_*hag 16

我相信会dig +short为您输出两行,因为您查询的域smtp.mydomain.net是 的 CNAME smtp.ggs.mydomain.net,而 dig 会打印中间解析步骤。

不过,您可能可以依赖 dig 输出的最后一行是您想要的 IP,因此应该执行以下操作:

dig +short smtp.mydomain.net | tail -n1
Run Code Online (Sandbox Code Playgroud)


小智 8

@dhag 的回答听起来不错;如果您不想 \xe2\x80\x9cly 依赖 dig 输出的最后一行 IP\xe2\x80\x9d,您可以使用grep仅提取数字 IP 地址:

\n\n
dig +short smtp.mydomain.net | grep '^[.0-9]*$'\n
Run Code Online (Sandbox Code Playgroud)\n