如何从IP获取主机名(Linux)?

问题描述 投票:0回答:6

我想通过 IP 地址获取远程计算机/主机名。 我找到了很多答案,例如 nslookup、host、resloveip 等。 但我仍然无法从我的目标机器(cent OS、ubuntu 等...)获取主机名 好像需要注册DNS服务器?

我有一台名为 test 的机器,使用 IP 10.1.27.97

但是我用上面的方法还是无法得到“test

有人可以帮我从IP地址中获取主机名吗?

linux hostname
6个回答
109
投票

要通过 IP 地址查找本地网络中的主机名,您可以使用 samba 套件中的

nmblookup
:

nmblookup -A <ip>

要在互联网上查找主机名,您可以使用

host
程序:

host <ip>

或者您可以通过运行安装

nbtscan

sudo apt-get install nbtscan

并使用:

nbtscan <ip>

*改编自 https://askubuntu.com/questions/205063/command-to-get-the-hostname-of-remote-server-using-ip-address/205067#205067

更新2018-05-13

您可以使用

nslookup
查询名称服务器。它是双向的!

nslookup <IP>
nslookup <hostname>

61
投票

为了使用

nslookup
host
gethostbyname()
,目标名称需要在 DNS 中注册或在运行程序的计算机上的主机文件中静态定义。是的,您可以使用 SSH 或其他应用程序连接到目标并直接查询它,但对于通用解决方案,您需要某种 DNS 条目。


9
投票

我发现在局域网中使用的另一种简单方法是

ssh [username@ip] uname -n

如果需要登录命令行将会

sshpass -p "[password]" ssh [username@ip] uname -n

0
投票

无需知道连接的IP :

sh -c "IP=\$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'); nslookup \$IP | grep 'name =' | awk '{print \$NF}'"

此代码是执行以下操作的 shell 命令:

  • 使用curl命令从checkip.dyndns.org网站检索执行该命令的计算机的公共IP地址。 curl 的输出通过管道传输到 sed 命令,该命令用于从响应中仅提取 IP 地址。
  • IP 地址随后存储在 IP 变量中。
  • nslookup 命令用于对 IP 地址执行反向 DNS 查找。这将返回与 IP 地址关联的域名。
  • nslookup 的输出通过管道传输到 grep 命令中,该命令用于提取包含字符串“name =”的行。
  • 最后使用awk命令提取该行的最后一个字段,即与IP地址关联的域名。

0
投票

请勿使用 host 命令。在某些操作系统上,您将在主机名后输入任何内容来设置主机名,因此输入主机 23.23.23.23 会将您的主机名设置为该名称。


0
投票

我发现,安装 sshpass 后,

sshpass -p "密码" ssh 用户@IP 主机名

返回远程主机的主机名:)

© www.soinside.com 2019 - 2024. All rights reserved.