【问题标题】:socket.gethostbyaddr returns unknown hostsocket.gethostbyaddr 返回未知主机
【发布时间】:2016-08-07 05:53:00
【问题描述】:

我想从主机名中获取 fqdn。 我在 linux 服务器上执行这个命令: python -c“导入系统,套接字;sys.stdout.write(socket.gethostbyaddr('')[0])” 此命令运行良好,并从主机名返回 fqdn。但是对于其他一些服务器,它会返回此错误: 回溯(最近一次通话最后): 文件“”,第 1 行,在 socket.herror: [Errno 1] 未知主机

当我执行“host” linux 命令时,我会使用 python 命令获取失败主机名的 fqdn。

请问有人有解决办法吗?

【问题讨论】:

  • 我在同一个接口上获得了 3 个 IP 并获得了 5 个服务。您想获取主机名但哪个接口(或克隆接口)是当前的?在获取主机名之前定义一个 IP 地址。使用netifaces 模块...

标签: python linux dns fqdn


【解决方案1】:

Difficulty using Python's socket.gethostbyaddr() 很好地涵盖了这一点。

要点是您必须验证是否存在 PTR 记录。如果没有,则必须通过 try, except 子句来处理。

具体看比较有效和无效PTR记录的部分。

【讨论】:

  • 我输入的不是 IP 地址,而是没有域的主机名。只是服务器名称。