名称或服务未知

时间:2016-07-07 20:08:26

标签: python centos centos6

我一直试图使用以下代码获取登录机器的人的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机箱。 不确定我是否解决了这个问题。

3 个答案:

答案 0 :(得分:1)

由于未正确设置主机名而发生错误。将主机名设置在三个不同的位置,即 -

  
      
  1. / etc / hostname
  2.   
  3. / etc / hosts
  4.   
  5. 运行命令$ hostname
  6.   

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

相反,您可以使用此命令尝试在端口53处以8.8.8.8连接到Google DNS服务器,并返回您的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])