我想列出连接到我的计算机的所有NIC的IP地址(不使用任何外部软件包)

import socket
print socket.gethostbyname_ex(socket.gethostname())[2]


该代码在Windows上运行正常,但是在我的Linux机器上,它输出127.0.1.1

如何更改以上代码以使其在Linux上运行?



/ etc / hostname的内容是

machine-name


/ etc / hosts的内容是

127.0.0.1 localhost
127.0.1.1 machine-name

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

最佳答案

我认为您的问题是/ etc / hosts的内容,这是socket用于将主机名与IP地址匹配的内容。

如果将/ etc / hosts更改为以下内容,则应该在列表中同时看到127.0.0.1127.0.1.1

127.0.0.1 localhost machine-name
127.0.1.1 machine-name

# And of course your IPv6 settings below...


该文件中没有的任何IP地址都不会出现在socket.gethostbyname_ex()的结果中。

关于linux - 无需使用外部程序包即可获取所有NIC的IP地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24673700/

10-16 17:24