python - linux系统和本地网络上的socket.gethostbyaddr()

标签 python django python-3.x centos

我有一个使用此功能的 django 应用程序,我正在尝试获取访问我的应用程序的 IP 地址的计算机名称。我正在使用 django-ipware 来执行此操作要获取客户端的 IP 地址,这部分工作正常。然后我使用 socket.gethostbyaddr() 要获取客户端的计算机名称,这在我的 Windows 开发机器上运行良好。

def get_comp_name(request):
    client_ip = get_client_ip(request)
    try:
        comp_name = socket.gethostbyaddr(client_ip[0])[0]
    except socket.herror:
        comp_name = ''

当我尝试部署到 centOS 7 机器时,执行 socket.gethostbyaddr() 时出现以下错误在本地网络 IP 地址上。

socket.herror: [Errno 1] Unknown host



我可以毫无问题地 ping 本地 IP 地址。我是否缺少我的 centOS 7 机器上的配置?

最佳答案

您的 DNS 服务器需要有一个条目才能正常工作。检查/etc/resolv.conf 是否 DNS 服务器 IP 正确,检查 DNS 服务器是否可以从 CentOS 节点访问,最后检查 DNS 服务器中的条目是否正确。

关于python - linux系统和本地网络上的socket.gethostbyaddr(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55876875/

相关文章:

python - Scrapy 好像没有做 DFO

python - 将 Django 管理站点用于模型的特定实例

python - 如何在多对多字段中使用 Django Haystack EdgeNGrams?

Python 3.7 及以上版本 : how to determine Linux distribution?

python - 如何消除 CSV 文件中的空白?

python - 处理多个 QWidget

python - 如何在 AddDimension 中正确设置 SetGlobalSpanCostCoefficient 和容量参数?

python - MythTV 的 Bash 脚本需要 Python 依赖项

Python-WindowsError : [Error 2] The system cannot find the file specified

python - Django 过滤器不排除否定前瞻正则表达式的结果