Unix 如何在不登录主机的情况下从IP查找主机名
我需要找到一个UNIX主机的主机名,该主机的IP在未登录到该UNIX主机的情况下是已知的Unix 如何在不登录主机的情况下从IP查找主机名,unix,command-line,hostname,Unix,Command Line,Hostname,我需要找到一个UNIX主机的主机名,该主机的IP在未登录到该UNIX主机的情况下是已知的 也可以使用traceroute命令 只需使用traceroute,它将显示带有主机名(IP解析)的路由路径。您也可以使用主机进行反向DNS查找。只需将IP地址作为参数: $ host 192.168.0.10 server10 has address 192.168.0.10 这里的其他答案是正确的-使用反向DNS查找。 如果您想通过脚本语言(Python、Perl)执行此操作,可以使用gethostb
也可以使用traceroute命令
只需使用traceroute,它将显示带有主机名(IP解析)的路由路径。您也可以使用
主机进行反向DNS查找。只需将IP地址作为参数:
$ host 192.168.0.10
server10 has address 192.168.0.10
这里的其他答案是正确的-使用反向DNS查找。
如果您想通过脚本语言(Python、Perl)执行此操作,可以使用gethostbyaddr API。在大多数情况下,traceroute命令工作正常。nslookup和host命令可能会失败。另一个可用于反向查找的NS查找实用程序是带有-x
选项的dig
:
$ dig -x 72.51.34.34
; <<>> DiG 9.9.2-P1 <<>> -x 72.51.34.34
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12770
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1460
;; QUESTION SECTION:
;34.34.51.72.in-addr.arpa. IN PTR
;; ANSWER SECTION:
34.34.51.72.in-addr.arpa. 42652 IN PTR sb.lwn.net.
;; Query time: 4 msec
;; SERVER: 192.168.178.1#53(192.168.178.1)
;; WHEN: Fri Jan 25 21:23:40 2013
;; MSG SIZE rcvd: 77
$dig-x72.51.34.34
; 挖掘9.9.2-P1-x 72.51.34.34
;; 全局选项:+cmd
;; 得到答案:
;; ->>适用于Windows ping-a 10.10.10的HEADERHEADER
- 对于Windows,请尝试:
NBTSTAT -A 10.100.3.104
或
- 对于Linux,请尝试:
nmblookup -A 10.100.3.104
它们几乎是一样的
python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"
如果您只需要名称,不需要其他信息,请在末尾添加[0]:
python -c "import socket;print(socket.gethostbyaddr('8.8.8.8'))[0]"
如果您正在专门查找Windows计算机,请尝试以下命令:
nbtstat -a 10.228.42.57
这取决于上下文。我认为您指的是操作系统的主机名(登录时由hostname
返回)。此命令仅用于内部名称,因此查询计算机名称需要不同的命名系统。有多个系统使用名称来标识主机,包括DNS、DHCP、LDAP(DN)、主机名
等。许多系统使用名称在多个命名系统之间同步名称。因此,hostname
的结果有时会与dig
(见下文)或其他命名系统的结果相匹配,但往往不匹配
DNS是目前最常见的,在互联网(如google.com.A 216.58.218.142
)和家庭(mDNS/LLMNR)上都使用,因此下面介绍如何执行:dig-x不会解析为规范域名(如“google.com”),而是解析为您查询的主机IP的主机名(如。“dfw25s08-in-f142.1e100.net”;有趣的花絮:1e100是一个googol)
还请注意,DNS主机可以有多个名称。这对于具有多个Web服务器(虚拟主机)的主机来说很常见,但由于虚拟化技术的普及,这种情况变得越来越不常见。这些主机都有
最后,请注意,DNS主机记录可以由本地计算机通过覆盖。如果您没有获得预期的主机名,请确保检查此文件
DHCP主机名的查询方式因使用的DHCP服务器软件而异,因为(据我所知)协议没有定义查询方法;但是,大多数服务器都提供了某种方式(通常使用特权帐户)
注意:DHCP名称通常与DNS服务器同步,因此在DHCP客户机最小值表和DNS服务器的a(或IPv6的AAAA)记录中通常会看到相同的主机名。同样,这通常作为zeroconf的一部分完成
还要注意,仅仅因为客户端存在DHCP租约,并不意味着它仍在使用
NetBIOS for TCP/IP(NBT)用于执行名称解析已有几十年,但后来被LLMNR用于名称解析(Windows上zeroconf的一部分)。此遗留系统仍然可以使用nbtstat
(Windows)或nmblookup
(Linux)进行查询.这是错误的:给定IP,唯一要做的就是反向查询DNS。因此,traceroute这不是正确的建议工具。NBTSTAT-a 10.10.10.10适用于Windows你会接受答案吗?@PaoloStefan如果用户最后一次出现是在2009年,这是一个极不可能的事件这回答了你的问题吗?请参阅Ottavio Camp的评论下面的分析:在centos安装上,您需要首先运行sudo-yum-install-bind-utils
。这将为younslookup安装nslookup。不推荐使用nslookup。您可以使用'dig'或'host'代替标题,突出显示socket的语法无效。对于python3,将print更改为带括号的函数:python-c”导入socket;打印(socket.gethostbyaddr('10.16.7.10'))“
nmblookup工作得很好,我并没有试图找到web服务器的主机名,而是在做不应该做的事情的计算机。这不仅暴露了Windows主机名,还暴露了Mac地址,这是我列表中的下一个地址!ubuntu中没有这样的包nmblookup。你指的是哪个linux?你的意思是“nslookup”吗?@johnsyrinek你能详细介绍一下DHCP主机名查询吗?我想通过IP查询另一台机器(在同一wlan中)的主机名,这可能吗?
python -c "import socket;print(socket.gethostbyaddr('127.0.0.1'))"
python -c "import socket;print(socket.gethostbyaddr('8.8.8.8'))[0]"
nbtstat -a 10.228.42.57