获取本地网络上未在/etc/hosts中设置的远程计算机的主机名



我有一个新的学习,我试图使用python的套接字获取主机名。

因此,我在macbook上运行了以下代码:

socket.gethostbyaddr("192.168.1.111")

我得到了('rock64', [], ['192.168.1.111']),然后我尝试了一台不再在网络上但曾经是的计算机的IP地址

socket.gethostbyaddr("192.168.1.189")

它返回:('mint', [], ['192.168.1.189'])然后我意识到它来自/etc/hosts文件。

现在,在该主机文件中,我还有以下条目:

/etc/hosts

172.217.25.3 google.com.hk

但如果我试图从wan地址的ip获取主机,我会得到与预期不同的结果!

socket.ghostbyaddr("172.217.25.3"(

返回('hkg07s24-in-f3.1e100.net', ['3.25.217.172.in-addr.arpa'], ['172.217.25.3'])

因此,我不想知道在以后的WAN ip地址情况下,我从哪里获得主机名,以及为什么在本地计算机ip的情况下,从配置的/etc/hosts文件中获得主机名?

如果socket.gethostbyaddr不必查看/etc/hosts文件或通过其他方式,我们如何获取本地网络上主机的主机名?

这是对"如何在本地网络上建立网络设备注册表?"问题的基于意见的回答

在本地网络上建立设备注册表的最佳方法是在网关上设置ntopng。它使用DPI(深度数据包检测(技术来收集有关主机的信息。NTOPNG有很好的用户界面,并显示主机名(如果可能的话(。您可以为不会通过任何协议泄露主机名的特定主机分配别名。

由于某些原因,ntopng开发人员没有在请求的json响应中包含别名http://YOUR-SERVER:3000/lua/host_get_json.lua?ifid=2&host=IP-OF-DEVICE。

您可以手动添加它,方法是将require "mac_utils"hj["alias"]=getDeviceName(hj["mac_address"])行添加到文件/usr/share/ntopng/scripts/lua/host_get_json.loa 中

您可以使用REST API来查询ntopng,并使用所提供的信息来构建所需的任何脚本。

相关内容

最新更新