如何确定哪些主机名没有解析到 IP 地址?

3
我是一个有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:

我正在使用Mac 10.9.1上的bash shell。给定一个包含主机名条目的文件,可能会包含以下内容

dave.mydomain.com
dave2.otherdomain.com
somethingelse.whatever.com

我该如何确定文件中哪个主机名无法解析为IP地址?

你可以尝试ping他们,这通常会返回一个已解析的IP地址。 - durbnpoisn
我在想是否有一种可编写脚本的方式——除了逐个ping文件中的每个条目之外的其他方法。 - Dave
这就是我建议的。将其放入一个Bash脚本中。如果不逐个测试,我不知道你如何期望测试它们。 - durbnpoisn
1个回答

3

从文件中读取每个主机名,执行主机名的DNS查找,并检查响应:

#!/bin/bash
while read hstnm
do
  if ! host ${hstnm} > /dev/null
  then
    echo "No ip for ${hstnm}"
  fi
done < hostnames.txt

我在这个例子中使用了 host 工具,但你也可以使用 dig(例如通过管道传递到 grep -q 查找 "NXDOMAIN"),或者使用 nslookup
dig + grep 示例:
#!/bin/bash
while read hstnm
do 
  if dig ${hstnm} | grep -q 'NXDOMAIN'
  then 
    echo "no ip for ${hstnm}"
  fi
done < hostnames.txt

请注意,这不会解决/etc/hosts中的条目。 - Stefan Fisk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接