【发布时间】:2016-11-10 07:10:17
【问题描述】:
我一直在尝试使用以下代码获取登录机器的人的 IP 地址,但出现错误。
>>> import socket
>>> socket.gethostbyname_ex(socket.gethostname())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.gaierror: [Errno -2] Name or service not known
相同的代码可以在其他 linux 机器上运行。 不确定我是否修复它。
【问题讨论】:
-
在 Arch 64 位内核 4.6.2 上工作
-
如果你只做
socket.gethostname()会发生什么? -
我正确获取了实例名称。
-
socket.gethostname()的输出是否与在 Bash 上运行echo $HOSTNAME相同?另外,您可以发布您的/etc/hosts文件吗? -
docs.python.org/2/library/socket.html#socket.gethostname - 这是您本地服务器的主机名,与登录机器的人无关。并且文档警告说,如果没有主机到 IP 的映射,您不能在结果上
gethostbyname。简而言之,您的服务器配置错误,您的代码没有按照您的意愿行事。