如何从IP地址find主机名,并登出主机

我需要find已知IP的UNIX主机的主机名,而不必login到该UNIX主机

使用nslookup

nslookup 208.77.188.166 ... Non-authoritative answer: 166.188.77.208.in-addr.arpa name = www.example.com. 

您也可以与host进行反向DNS查找。 只要把它作为一个参数的IP地址:

 $ host 192.168.0.10 server10 has address 192.168.0.10 

另一个可用于反向查找的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 -x 127.0.0.1 ; <<>> DiG 9.9.2-P1 <<>> -x 127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11689 ;; flags: qr aa ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;1.0.0.127.in-addr.arpa. IN PTR ;; ANSWER SECTION: 1.0.0.127.in-addr.arpa. 10 IN PTR localhost. ;; Query time: 2 msec ;; SERVER: 192.168.178.1#53(192.168.178.1) ;; WHEN: Fri Jan 25 21:23:49 2013 ;; MSG SIZE rcvd: 63 

从挖掘手册引用:

反向查找 – 将地址映射到名称 – 由-x选项简化。 addr是以点分十进制forms表示的IPv4地址,或冒号分隔的IPv6地址。 使用此选项时,不需要提供名称,类和types参数。 dig自动执行查找名称,如11.12.13.10.in-addr.arpa,并将查询types和类分别设置为PTR和IN。

对于Windows ping -a 10.10.10.10

  • 对于Windows,请尝试:

     NBTSTAT -A 10.100.3.104 

    要么

     ping -a 10.100.3.104 
  • 对于Linux,请尝试:

     nmblookup -A 10.100.3.104 

他们几乎是一样的。

 python -c "import socket;print socket.gethostbyaddr('10.16.7.10')" 

这取决于上下文。 我想你是指操作系统的主机名(当你login时由hostname名返回)。 此命令仅用于内部名称 ,因此要查询机器名称需要不同的命名系统。 有多个系统使用名称来标识主机,包括DNS,DHCP,LDAP(DN), hostname等,许多系统使用zeroconf在多个命名系统之间同步名称。 由于这个原因, hostname结果有时会与dig (见下文)或其他命名系统的结果相匹配,但通常它们不匹配。

DNS是目前为止最常见的,在互联网(如google.com. A 216.58.218.142 )和家庭(mDNS / LLMNR)上都使用DNS ,因此以下是如何执行反向DNS查询 : dig -x <address>nslookuphost更简单,提供更less的细节,甚至可能返回不同的结果;但是, dig不包括在Windows中)。

请注意, CDN中的主机名称不会parsing为规范域名(例如“google.com”),而是您查询的主机IP的主机名(例如“dfw25s08-in-f142.1e100.net”;有趣的珍闻: 1e100是1 googol)。

另请注意,DNS主机可以有多个名称。 这对于拥有多个networking服务器(虚拟主机)的主机来说是很常见的,但是由于虚拟化技术的普及,这种情况已经不那么普遍了。 这些主机有多个PTR DNSlogging 。

最后,请注意,DNS主机logging可以由本地机器通过/ etc / hosts覆盖。 如果你没有得到你期望的主机名,一定要检查这个文件。

根据使用哪个DHCP服务器软件, DHCP主机名的查询方式不同,因为(据我所知)协议没有定义查询方法; 然而,大多数服务器提供了一些这样做(通常与一个特权帐户)。

注意DHCP名称通常与DNS服务器同步,所以通常在DHCP客户端最less表和DNS服务器A(或AAAA for IPv6)logging中看到相同的主机名。 同样,这通常是作为零configuration的一部分完成的。

另请注意,仅仅因为客户端存在DHCP租约,并不意味着它仍在使用中。

用于TCP / IP的NetBIOS(NBT)几十年来一直用于执行名称parsing,但是后来被用于名称parsing的LLMNR(Windows上的zeroconf的一部分)取代。 这个遗留系统仍然可以用nbtstat (Windows)或nmblookup (Linux)查询。

这里的其他答案是正确的 – 使用反向DNS查找。 如果你想通过脚本语言(Python,Perl)来完成,你可以使用gethostbyaddr API。

在大多数情况下,traceroute命令工作正常。 nslookup和主机命令可能会失败。

如果您正在寻找Windows机器,请尝试以下命令:

 nbtstat -a 10.228.42.57 

您也可以使用traceroute命令。

http://linux.die.net/man/8/traceroute

只需使用traceroute,它将向您显示具有主机名称的路由path(已parsing的IP)