Python,如何获取具有多个NIC的所有外部IP地址
使用python获取具有多个nic的计算机的所有外部ip地址的最有效方法是什么?我知道需要使用外部服务器(我有一个可用的服务器),但是无法找到一种方法来找到指定用于连接的nic的好方法(因此,我可以使用for循环遍历各种nics
)。关于采取最佳方法的任何建议?
-
您应该使用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.\n\nReturns a dict whose keys are equal to the address family constants,\ne.g. netifaces.AF_INET, and whose values are a list of addresses in\nthat 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 /* Internet IP Protocol */ #define AF_INET6 10 /* IP version 6 */ #define AF_PACKET 17 /* Packet family */