在Python中检索网络掩码

Sco*_*ott 7 python

如何检索网络设备的网络掩码(最好在Linux中,但如果它是跨平台的那么酷)?我知道如何在Linux上使用C语言,但我无法在Python中找到一种方法 - 或许可以减去ctypes.那或解析ifconfig.还有其他方法吗?

ioctl(socknr, SIOCGIFNETMASK, &ifreq) // C version
Run Code Online (Sandbox Code Playgroud)

Ben*_*ank 8

适用于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。