python3-ipaddress

定义IP地址

  • 自动判断网络版本
>>> ipaddress.ip_address('192.0.2.1') 
IPv4Address('192.0.2.1')
>>> ipaddress.ip_address('2001:DB8::1') 
IPv6Address('2001:db8::1')
  • 强制指定版本
>>> ipaddress.ip_address(1) 
IPv4Address('0.0.0.1')
>>> ipaddress.IPv4Address(1) 
IPv4Address('0.0.0.1')
>>> ipaddress.IPv6Address(1) 
IPv6Address('::1')

定义网络

>>> ipaddress.ip_network('192.0.2.0/24') 
IPv4Network('192.0.2.0/24')
>>> ipaddress.ip_network('2001:db8::0/96') 
IPv6Network('2001:db8::/96')

定义网络不能指定主机位,否则会报错,除非设置strict参数为False

>>> ipaddress.ip_network('192.0.2.1/24') 
Traceback (most recent call last):
...
ValueError: 192.0.2.1/24 has host bits set
>>> ipaddress.ip_network('192.0.2.1/24', strict=False) 
IPv4Network('192.0.2.0/24')

定义主机接口

像 192.0.2.1/24 这样的表 示法通常被网络工程师和为防火墙和路由器编写工具的人用作“192.0.2.0/24 网络上的主机 192.0. 2.1 ”的简写。

>>> ipaddress.ip_interface('192.0.2.1/24') 
IPv4Interface('192.0.2.1/24')
>>> ipaddress.ip_interface('2001:db8::1/96') 
IPv6Interface('2001:db8::1/96')

审查 Address/Network/Interface 对象

判断IP地址版本

>>> addr4 = ipaddress.ip_address('192.0.2.1') 
>>> addr6 = ipaddress.ip_address('2001:db8::1') 
>>> addr6.version
6
>>> addr4.version
4

从接口获取网络地址

>>> host4 = ipaddress.ip_interface('192.0.2.1/24') 
>>> host4.network
IPv4Network('192.0.2.0/24')
>>> host6 = ipaddress.ip_interface('2001:db8::1/96') 
>>> host6.network
IPv6Network('2001:db8::/96')

网络中IP地址地址数量

>>> net4 = ipaddress.ip_network('192.0.2.0/24') 
>>> net4.num_addresses
256
>>> net6 = ipaddress.ip_network('2001:db8::0/96') 
>>> net6.num_addresses
4294967296

网络中可用的IP地址

>>> net4 = ipaddress.ip_network('192.0.2.0/24') 
>>> for x in net4.hosts():
... print(x)
192.0.2.1
192.0.2.2 
... 
192.0.2.253 
192.0.2.254

获取网络掩码

>>> net4 = ipaddress.ip_network('192.0.2.0/24') 
>>> net4.netmask
IPv4Address('255.255.255.0')
>>> net6 = ipaddress.ip_network('2001:db8::0/96') 
>>> net6.netmask 
IPv6Address('ffff:ffff:ffff:ffff:ffff:ffff::')

展开或压缩地址

>>> addr6.exploded 
'2001:0db8:0000:0000:0000:0000:0000:0001' 
>>> addr6.compressed
'2001:db8::1'

>>> net6.exploded 
'2001:0db8:0000:0000:0000:0000:0000:0000/96' 
>>> net6.compressed
'2001:db8::/96'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值