gpt4 book ai didi

python - 如何使用 python 获取设备的主机名、别名、IP 地址和规范名称(不要求库读取/etc/hosts)?

转载 作者:行者123 更新时间:2023-11-28 19:03:38 27 4
gpt4 key购买 nike

我想获取有关给定标识符的设备的这些字段:

主机名、别名、IP 地址和规范名称

我可以使用套接字获取这些:

socket.gethostbyaddr('machine-name')

然而,每次socket调用都会打开hosts文件(/etc/hosts)并读入。我想跳过这一步。

要么我希望套接字只打开一次主机文件(并保存数据),要么我希望套接字跳过查看主机文件并进行 DNS 查找(我将自己读取主机文件)。

我试着用 dnspython 的解析器来做这件事,但我不知道如何为我想要的字段解析返回的结果。

最佳答案

如果您需要绝对且唯一的 DNS 查询,请执行 DNS 查询!

否则 gethostbyaddr 会询问使用配置的任何源的操作系统。

从手册中看到这个:

The domain name queries carried out by gethostbyname() and gethostbyaddr() rely on the Name Service Switch (nsswitch.conf(5)) configured sources or a local name server (named(8)). The default action is to query the Name Service Switch (nsswitch.conf(5)) configured sources, failing that, a local name server (named(8)).

因此您可以查看 nsswitch.conf 的手册以了解更多相关信息。

如果你控制主机,你可以编辑文件并放入:

hosts: dns

然后您将确定 gethostbyaddr 仅查询 DNS。

但是如果您的应用程序应该在不同的主机上执行,并且您需要进行 DNS 查询,那么只需使用适当的库进行 DNS 查询即可。

如果您在这里搜索“dnspython”,您会找到许多关于如何使用它的示例,例如:returning 'A' DNS record in dnspython

关于python - 如何使用 python 获取设备的主机名、别名、IP 地址和规范名称(不要求库读取/etc/hosts)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798450/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com