--
我已经搜索了如何使用python获取本地ip地址。(我的python版本是3.4),有一个答案。这个答案说:
import socket
socket.gethostbyname(socket.gethostname())而且它是有效的。脚本说我的ip地址是192.168.56.1。但是我的本地ip地址是192.168.0.100。
那个ip地址是什么?这是一个ip地址'Virtualbox主机-纯网络‘,这是在我安装virtualbox一周前安装的。(Virtualbox的版本是5.0)我现在有两个网络适配器,一个是'Virtualbox主机-纯网络‘,另一个是局域网
当我在网络面板中关闭'Virtualbox主机专用网络‘时。python脚本说我想要的ip地址是192.168.0.100。
如何获得我的ip地址'192.168.0.100‘而不禁用'Virtualbox主机-纯网络’?(我真的不想关掉“Virtualbox主机-纯网络”。)
发布于 2015-08-18 10:50:42
您可以使用一个名为网面的模块来获取计算机上可用的任何网络接口的ip地址。
如果您在系统上安装了pip,您可以使用安装pip。
pip install netifaces一个来自linux系统上命令行的示例:
我的机器在eth0上有我的常规网络接口,在eth0:0上有别名网络接口(这类似于您的仅使用virtualbox主机的网络接口,但名称可能不一样)。
通过python解释器获取计算机上可用网络接口的列表:
(stackoverflow)[root@joeyoung.io stackoverflow]# python
>>> import netifaces
>>> netifaces.interfaces()
['lo', 'eth0', 'eth0:0']获取有关我的常规网络接口eth0的更多信息
>>> netifaces.ifaddresses('eth0')
{17: [{'broadcast': 'ff:ff:ff:ff:ff:ff', 'addr': '52:54:00:0d:4d:36'}], 2: [{'broadcast': '159.107.29.255', 'netmask': '255.255.254.0', 'addr': '159.107.28.65'}]}我只对互联网协议地址家族感兴趣,所以让我们缩小使用AF_INET作为过滤器的结果:
>>> netifaces.ifaddresses('eth0')[netifaces.AF_INET]
[{'broadcast': '159.107.29.255', 'netmask': '255.255.254.0', 'addr': '159.107.28.65'}]这给了我一个有一个条目的列表。那个条目包含一本字典。为了获得我的addr接口的ip地址,我希望得到由eth0键表示的值:
>>> netifaces.ifaddresses('eth0')[netifaces.AF_INET][0]['addr']
'159.107.28.65'159.107.28.65是我的eth0接口的本地IP地址。
我们还可以按照上面的步骤在eth0:0上获取别名IP地址:
>>> netifaces.ifaddresses('eth0:0')
{2: [{'broadcast': '192.168.13.255', 'netmask': '255.255.255.0', 'addr': '192.168.13.2'}]}
>>> netifaces.ifaddresses('eth0:0')[netifaces.AF_INET]
[{'broadcast': '192.168.13.255', 'netmask': '255.255.255.0', 'addr': '192.168.13.2'}]
>>> netifaces.ifaddresses('eth0:0')[netifaces.AF_INET][0]['addr']
'192.168.13.2'发布于 2015-08-19 00:28:36
这个序列在Linux虚拟机上适用于我:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 53))
print s.getsockname()[0]结果:
10.112.54.236发布于 2021-11-09 13:30:23
让我把我所做的事记录下来。
我使用Oracle VirtualBox从Windows 10主机运行Linux。
192.168.1.46是Windows10主机的IP地址,即VM主机。10.0.2.15是VM访问Internet的IP地址。这是由甲骨文VirtualBox自动创建的。NAT用于在Internet和VM主机或VM之间转换TCP/IP消息。192.168.56.102和192.168.56.1是我手动创建仅主机适配器时甲骨文VirtualBox创建的IP地址。我可以从Windows 10主机登录到Linux。

我使用psutil (一个Python )和ip (Linux命令)来获取IP地址。
192.168.56.1
ip路由得到192.168.56.1 \print '{print $5}‘https://stackoverflow.com/questions/32069628
复制相似问题