如何检索网络设备的网络掩码(最好在Linux中,但如果它是跨平台的那么酷)?我知道如何在Linux上使用C语言,但我无法在Python中找到一种方法 - 或许可以减去ctypes.那或解析ifconfig.还有其他方法吗?
ioctl(socknr, SIOCGIFNETMASK, &ifreq) // C version
Run Code Online (Sandbox Code Playgroud)
这适用于Linux上的Python 2.2:
iface = "eth0"
socket.inet_ntoa(fcntl.ioctl(socket.socket(socket.AF_INET, socket.SOCK_DGRAM), 35099, struct.pack('256s', iface))[20:24])
Run Code Online (Sandbox Code Playgroud)
小智 7
该netifaces
模块在这里值得一提。直接来自文档:
>>> netifaces.interfaces()
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']
>>> addrs = netifaces.ifaddresses('en0')
>>> addrs[netifaces.AF_INET]
[{'broadcast': '10.15.255.255', 'netmask': '255.240.0.0', 'addr': '10.0.1.4'}, {'broadcast': '192.168.0.255', 'addr': '192.168.0.47'}]
Run Code Online (Sandbox Code Playgroud)
适用于 Windows、Linux、OS X 和其他 UNIX。