在我的 Python 脚本中,我需要检索运行脚本的计算机的 IP 地址及其网络地址和网络字节。
至于IP地址,我在存档中找到了解决方案:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("www.google.com",80))
myAddress = (s.getsockname()[0])
s.close()
但是我应该如何查找网络地址和网络字节呢?我需要将此信息放入 tcpdump 的过滤器中,格式如下$NetworkAddress/$NetworkBytes
,如果这有帮助的话。
Example:
128.1.2.0/20
我实际上可以在下面找到它inet
当我跑步时ip addr
。有什么简单的方法可以在Python中获取这些信息吗?
对于 Linux 尝试
iface = "eth0"
socket.inet_ntoa(fcntl.ioctl(socket.socket(socket.AF_INET, socket.SOCK_DGRAM),
35099, struct.pack('256s', iface))[20:24])
or http://github.com/rlisagor/pynetlinux http://github.com/rlisagor/pynetlinux
(如这里建议的:在Python中检索网络掩码 https://stackoverflow.com/questions/936444/retrieving-network-mask-in-python)
对于 Linux、Windows 和 MacOS,请考虑http://alastairs-place.net/projects/netifaces/ http://alastairs-place.net/projects/netifaces/
Update:
如果您需要 cidr(例如“128.1.2.0/20”),您可以使用任何相关的库:
例如netaddr
:
>> from netaddr import IPNetwork
>> print str(IPNetwork('1.2.3.4/255.255.255.0').cidr)
1.2.3.0/24
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)