New in version python: 3.3
import ipaddress
net = ipaddress.ip_network('10.9.0.0/24')
for i, ip in zip(range(3), net):
print(ip)
# '10.9.0.0'
# '10.9.0.1'
# '10.9.0.2'
net4 = ipaddress.ip_network('10.9.0.0/24')
adr4_1 = ipaddress.ip_address('10.9.0.6')
adr4_2 = ipaddress.ip_address('10.7.0.6')
adr4_1 in net4
# True
adr4_2 in net4
# False
net6 = ipaddress.ip_network('fdfd:87b5:b475:5e3e::/64')
adr6_1 = ipaddress.ip_address('fdfd:87b5:b475:5e3e:b1bc:e121:a8eb:14aa')
adr6_2 = ipaddress.ip_address('fe80::3840:c439:b25e:63b0')
adr6_1 in net6
# True
adr6_2 in net6
# False
ipaddress.ip_address('192.0.2.1') < ipaddress.ip_address('192.0.2.2')
# True
ipaddress.
ip_address
(address)Возвращает IPv4Address()
, IPv6Address()
, сведения по ip адресу
addr = ipaddress.ip_address('10.16.14.17')
# IPv4Address('10.16.14.17')
int(addr)
# 168824337
ipaddress.ip_address('fdfd:87b5:b475:5e3e:b1bc:e121:a8eb:14aa')
# IPv6Address('fdfd:87b5:b475:5e3e:b1bc:e121:a8eb:14aa')
ipaddress.ip_address(3221225985)
# IPv4Address('192.0.2.1')
ipaddress.ip_address(42540766411282592856903984951653826561)
# IPv6Address('2001:db8::1')
ipaddress.
ip_interface
(address)Возвращает IPv4Interface()
, IPv6Interface()
, сведения по ip адресу
addr = ipaddress.ip_interface('10.9.0.6/24')
# IPv4Interface('10.16.14.17')
ipaddress.ip_address('fdfd:87b5:b475:5e3e:b1bc:e121:a8eb:14aa/64')
# IPv6Interface('fdfd:87b5:b475:5e3e:b1bc:e121:a8eb:14aa/64')
ipaddress.
ip_network
(address, strict=True)Возвращает IPv4Network()
, IPv6Network()
, сведения по ip адресу
ipaddress.ip_network('10.9.0.0/24')
# IPv4Network('10.9.0.0/24')
ipaddress.ip_network('fdfd:87b5:b475:5e3e::/64')
# IPv6Network('fdfd:87b5:b475:5e3e::/64')
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')
ipaddress.ip_network(3221225984)
# IPv4Network('192.0.2.0/32')
ipaddress.ip_network(42540766411282592856903984951653826560)
# IPv6Network('2001:db8::/128')
ipaddress.
collapse_addresses
(adressess)[
ipaddr
for ipaddr in ipaddress.collapse_addresses(
[
ipaddress.IPv4Network('192.0.2.0/25'),
ipaddress.IPv4Network('192.0.2.128/25')
]
)
]
# [IPv4Network('192.0.2.0/24')]
ipaddress.
get_mixed_type_key
(obj)ipaddress.
summarize_address_range
(first, last)[
ipaddr
for ipaddr in ipaddress.summarize_address_range(
ipaddress.IPv4Address('192.0.2.0'),
ipaddress.IPv4Address('192.0.2.130')
)
]
"""
[
IPv4Network('192.0.2.0/25'),
IPv4Network('192.0.2.128/31'),
IPv4Network('192.0.2.130/32')
]
"""
ipaddress.
v4_int_to_packed
(address)ipaddress.v4_int_to_packed(3221225985)
# b'\xc0\x00\x02\x01'
ipaddress.
v6_int_to_packed
(address)ipaddress.
IPv4Address
(address)IPv4 объект
IPv4Address('192.168.0.1')
# IPv4Address('192.168.0.1')
IPv4Address(3232235521)
# IPv4Address('192.168.0.1')
IPv4Address(b'\xC0\xA8\x00\x01')
# IPv4Address('192.168.0.1')
compressed
exploded
is_global
is_link_local
is_loopback
is_multicast
is_private
addr.is_private
# True
is_reserved
is_unspecified
max_prefixlen
packed
reverse_pointer
New in version python: 3.5
ipaddress.ip_address("127.0.0.1").reverse_pointer
# '1.0.0.127.in-addr.arpa'
version
Версия протокола
addr.version
# 4
ipaddress.
IPv6Address
addr = IPv6Address(1)
# IPv6Address('::1')
compressed
ipaddress.ip_address(‘2001:db8::1’).compressed # ‘2001:0db8::1’
exploded
ipaddress.ip_address(‘2001:db8::1’).exploded # ‘2001:0db8:0000:0000:0000:0000:0000:0001’
ipv4_mapped
is_global
is_link_local
New in version python: 3.4
is_loopback
is_multicast
is_private
addr.is_private
# True
is_reserved
is_site_local
is_unspecified
max_prefixlen
packed
reverse_pointer
New in version python: 3.5
ipaddress.ip_address("2001:db8::1").reverse_pointer
# '1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa'
sixtofour
teredo
version
Версия протокола
addr.version
# 6
ipaddress.
IPv4Interface
(address)interface = IPv4Interface('192.0.2.1/24')
ip
IPv4Interface('192.0.2.5/24').ip
# IPv4Address('192.0.2.5')
network
IPv4Interface('192.0.2.5/24').network
# IPv4Network('192.0.2.0/24')
with_hostmask
IPv4Interface('192.0.2.5/24').with_hostmask
# '192.0.2.5/0.0.0.255'
with_netmask
IPv4Interface('192.0.2.5/24').with_netmask
# '192.0.2.5/255.255.255.0'
with_prefixlen
IPv4Interface('192.0.2.5/24').with_prefixlen
# '192.0.2.5/24'
ipaddress.
IPv6Interface
(address)interface = IPv4Interface('2001:db8::1/96')
ip
network
interface.host
# IPv6Network('2001:db8::/96')
with_hostmask
with_netmask
with_prefixlen
ipaddress.
IPv4Network
net = IPv4Network('192.0.2.0/24')
broadcast_address
compressed
exploded
hostmask
net.hostmask
# IPv4Address('0.0.0.255')
is_link_local
is_loopback
is_private
is_reserved
is_unspecified
max_prefixlen
netmask
net.netmask
# IPv4Address('255.255.255.0')
network_address
num_addresses
net.num_addresses
# 256
prefixlen
version
with_hostmask
with_netmask
with_prefixlen
address_exclude
(network)n1 = ip_network('192.0.2.0/28')
n2 = ip_network('192.0.2.1/32')
list(n1.address_exclude(n2))
"""
[
IPv4Network('192.0.2.8/29'),
IPv4Network('192.0.2.4/30'),
IPv4Network('192.0.2.2/31'),
IPv4Network('192.0.2.0/32')
]
"""
hosts
()for ip in net.hosts()
print(ip)
"""
192.0.2.1
...
192.0.2.254
"""
overlaps
(other)subnet_of
(other)New in version python: 3.7
subnets
(prefixlen_diff=1, new_prefix=None)supernet_of
(other)New in version python: 3.7
supernet
(prefixlen_diff=1, new_prefix=None)ipaddress.
IPv6Network
net = IPv6Network('2001:db8::0/96')
broadcast_address
compressed
network.compressed # ‘2001:0db8::/96’
exploded
interface.exploded # ‘2001:0db8:0000:0000:0000:0000:0000:0000/96’
hostmask
net.hostmask
# IPv6Address('::ffff:ffff)
is_link_local
is_loopback
is_multicast
is_private
is_reserved
is_site_local
is_unspecified
max_prefixlen
network_address
netmask
net.netmask
# IPv4Address('ffff:ffff:ffff:ffff:ffff:ffff::')
num_addresses
net.num_addresses
# 4294967296
prefixlen
version
with_hostmask
with_netmask
with_prefixlen
address_exclude
(network)hosts
()overlaps
(other)subnet_of
(other)subnets
(prefixlen_diff=1, new_prefix=None)supernet_of
(other)supernet
(prefixlen_diff=1, new_prefix=None)