Bash:查找主机名的 IP,包括搜索 /etc/hosts

Bash:查找主机名的 IP,包括搜索 /etc/hosts

Ubuntu 10.10+

在我的脚本中我需要查找给定主机名的 IP。

如果该名称在中列出/etc/hosts,则命令应该打印来自的 IP /etc/hosts,而不是来自 DNS 服务器的 IP。

我尝试过的命令(、、nslookup)完全被忽略— 至少对于 DNS 服务器不知道的名称而言。dighost/etc/hosts

注意:我更喜欢不需要/etc/hosts手动进行 grep 的解决方案。

答案1

getent使用低级 glibc 信息函数查询所有配置的源。

$ getent ahosts amd.com
163.181.249.32  STREAM amd.com
163.181.249.32  DGRAM  
163.181.249.32  RAW    
$ getent ahosts ipv6.google.com
2001:4860:b009::69 STREAM ipv6.l.google.com
2001:4860:b009::69 DGRAM  
2001:4860:b009::69 RAW    

答案2

$ gethostip localhost
localhost 127.0.0.1 7F000001
$ gethostip -d example.org
192.0.43.10

syslinux软件包来看,至少在 Ubuntu 12.04 中是这样的。

答案3

这是超级黑客,但我已经使用它很长时间了,并且它可以工作(对于 ipv4):

function ipfor() {
  ping -c 1 $1 | grep -Eo -m 1 '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}';
}

使用方式如下:ipfor google.com

答案4

nmap -sP 192.168.1.0/24|grep SEARCHED_HOSTNAME|sed -n 's/.*[(]\([0-9\.]*\)[)].*/\1/p'

无 DNS 查询

相关内容