Ubuntu 10.10+
在我的脚本中我需要查找给定主机名的 IP。
如果该名称在中列出/etc/hosts
,则命令应该打印来自的 IP /etc/hosts
,而不是来自 DNS 服务器的 IP。
我尝试过的命令(、、nslookup
)完全被忽略— 至少对于 DNS 服务器不知道的名称而言。dig
host
/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 查询