我想列出连接到我的计算机的所有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.1
和127.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/