栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从接口获取物理接口IP地址

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从接口获取物理接口IP地址

您应该使用netifaces。它被设计为跨平台的,并且包含Windows专用代码以及可在不同UNIX
/ UNIX类平台上工作的各种通用版本。

从netifaces版本0.10.0开始,支持Python3。

使用摘要

>>> from netifaces import AF_INET, AF_INET6, AF_link, AF_PACKET, AF_BRIDGE>>> import netifaces as ni>>> ni.interfaces()['lo', 'eth0', 'eth1', 'vboxnet0', 'dummy1']>>>>>> ni.ifaddresses('eth0')[AF_link]   # NOTE: AF_link is an alias for AF_PACKET[{'broadcast': 'ff:ff:ff:ff:ff:ff', 'addr': '00:02:55:7b:b2:f6'}]>>> ni.ifaddresses('eth0')[AF_INET][{'broadcast': '172.16.161.7', 'netmask': '255.255.255.248', 'addr': '172.16.161.6'}]>>>>>> # eth0 ipv4 interface address>>> ni.ifaddresses('eth0')[AF_INET][0]['addr']'172.16.161.6'>>>>

细节

Windows支持:

大多数MS Windows安装都不需要编译器。如果收到有关为Windows安装MS Visual C
++的警告,请非常小心,因为您需要将用于python的编译器版本与用于模块的编译器版本匹配。

netifaces数据结构的详细示例:

>>> import netifaces as ni>>> ni.interfaces()['lo', 'eth0', 'eth1', 'vboxnet0', 'dummy1']>>> ni.ifaddresses('eth0'){    17: [        { 'broadcast': 'ff:ff:ff:ff:ff:ff', 'addr': '00:02:55:7b:b2:f6'        }    ],    2: [        { 'broadcast': '172.16.161.7', 'netmask': '255.255.255.248', 'addr': '172.16.161.6'        }    ],    10: [        { 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::202:55ff:fe7b:b2f6%eth0'        }    ]}>>> >>> print(ni.ifaddresses.__doc__)Obtain information about the specified network interface.Returns a dict whose keys are equal to the address family constants,e.g. netifaces.AF_INET, and whose values are a list of addresses inthat family that are attached to the network interface.>>>>>> # for the IPv4 address of eth0>>> ni.ifaddresses('eth0')[2][0]['addr']'172.16.161.6'

用于索引协议的数字来自

/usr/include/linux/socket.h
(在Linux中)… 编辑
:我的3.2内核在这里具有它们:
/usr/src/linux-headers-3.2.0-4-common/include/linux/socket.h

#define AF_INET         2       #define AF_INET6        10      #define AF_PACKET       17      

好消息是您不必记住所有这些标头常量,它们包含在netifaces中:

>>> from netifaces import AF_INET, AF_INET6, AF_link, AF_PACKET, AF_BRIDGE>>> import netifaces as ni


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号