我尝试使用名称解析并获取网站的 IP 地址。我使用nslookup命令并使用其输出的第 6 行。因为我注意到 nslookup 的输出在第 6 行包含 IP 地址(在 IPv4 中)。我的命令是:
website=<somewebsiteURL>
IP=$(nslookup "$website" | head -n 6 | tail -n 1 | cut -d" " -f2)
我也尝试了 sed 命令来达到相同的目标并使用:
website=<somewebsiteURL>
IP=$(nslookup "$website" | sed -n 6p | cut -d" " -f2)
结果是一样的,结果不可靠,有时有效,有时无效。
它可以正常工作,但并非总是如此。有时它读取第 7 行,而不是第 6 行并失败。
实际上我用另一种方法解决了我的问题:
website=<somewebsiteURL>
newIP=$(nslookup "$website" | grep "Address: " | head -n 1 | cut -d" " -f2)
每次都给出正确的线路和 IP 地址(尽管它可以提供多个 IP > nslookup 可以返回多个 IP)
为什么前两个代码失败?
你可以给一个
host
指挥的机会。由于通常可以将多个 IP 与主机名相关联,因此您可能会对第一个 IP 感到满意。这似乎更可靠
sed 1q
过滤除第一行之外的所有行,awk '{ print $NF }'
打印出你想要的最后一个 IP 字段,并-4
指示使用 ipV4 地址,你可能想要那个用于
grep
解析“看起来像”有效 IPv4 地址的字符串:使用诸如
dig
. 它可以直接输出您想要的信息,无需外部解析工具: