您应该使用netifaces。它被设计为在Mac OS
X,Linux和Windows上跨平台。
>>> 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': '24.19.161.7', 'netmask': '255.255.255.248', 'addr': '24.19.161.6'}], 10: [{'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::202:55ff:fe7b:b2f6%eth0'}]}>>> >>> ni.ifaddresses.__doc__'Obtain information about the specified network interface.nnReturns a dict whose keys are equal to the address family constants,ne.g. netifaces.AF_INET, and whose values are a list of addresses innthat family that are attached to the network interface.'>>> # for the IPv4 address of eth0>>> ni.ifaddresses('eth0')[2][0]['addr']'24.19.161.6'用于索引协议的数字来自
/usr/include/linux/socket.h(在Linux中)…
#define AF_INET 2 #define AF_INET6 10 #define AF_PACKET 17



