bash - 如何确定哪些主机名未解析为 IP 地址?

我在 Mac 10.9.1 上使用 bash shell。给定一个主机名文件,其中可能包含像

这样的条目
dave.mydomain.com
dave2.otherdomain.com
somethingelse.whatever.com

如何确定文件中的哪些主机名未解析为 IP 地址?

最佳答案

从文件中读取每个主机名,执行主机名的 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

https://stackoverflow.com/questions/24046360/

相关文章:

composer-php - Composer 安装与更新现有组件?

dynamic - 在 MongoDB 中为动态添加的字段创建索引

arm - 使用 llvm 从桌面交叉编译到 arm

sql - 自增问题postgresql

php - 如何通过表格中的表单发送复选框状态

r - 如何向现有的 Aspell 词典中添加更多单词?

image - 我需要缩小图像尺寸?有人可以帮助我吗?

php - 如何为 PHP 类提供表单操作

netlogo - 如何在Netlogo中直接保存.txt文件的数据?

hornetq - 在同一个虚拟机中启动多个嵌入式 HornetQ 代理