2016-07-07 49 views
4

我一直在尝试使用下面的代码登录到本机的人的ipaddress,但我得到一个错误。姓名或服务不知道

>>> 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盒子中工作。 不知道我修复它。

+0

在这里工作拱上的64位内核4.6。 2 –

+0

如果你只是'socket.gethostname()'会发生什么? –

+0

我正确地获取实例名称。 – user1050619

回答

0

检查socket.gethostname()返回的内容是否可以ping通。基本上这是查找失败。检查您的/etc/hosts以查看它是否已列出。我知道这看起来很奇怪,但我认为如果返回的主机名没有条目,你会得到一个名称服务失败,就是这样。

1

仅仅因为没有正确设置主机名而发生错误。设置主机名,在三个不同的地方,这是在 -

  1. 的/ etc /主机名
  2. /etc/hosts中
  3. 运行命令$主机名

然后注销和登录再次。你完成了。

0

如果您正在使用IPv6或具有多个网络接口的服务器,此命令将无法正常工作。

相反,你可以使用此命令试图在8.8.8.8连接到谷歌DNS服务器的53端口,并返回你的ip:

import socket 
print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]) 
相关问题