Blog JSystems - uwalniamy wiedzę!

Szukaj

Moduł ipaddress pozwala na sprawdzanie czy dany ciąg jest adresem IP, czy jest w sieci publicznej czy prywatnej etc. Aby rozpocząć operacje na adresie IP musimy najpierw stworzyć reprezentujący go obiekt:

import ipaddress
a=ipaddress.ip_address(
"10.0.0.1")

Na tym etapie wykonywana jest walidacja adresu. Gdybys podał coś co adresem IP nie jest, jak na przykład tu:

import ipaddress
a=ipaddress.ip_address(
"there's no place like localhost...")

otrzymamy wyjątek z komunikatem:

ValueError: "there's no place like localhost..." does not appear to be an IPv4 or IPv6 address

Ipaddress dla poprawnie zwalidowanego adresu udostępnia szereg ciekawych funkcjonalności. Możemy np. weryfikować czy dany adres leży w sieci prywatnej czy publicznej:

import ipaddress
a=ipaddress.ip_address(
'46.41.128.110')
a2=ipaddress.ip_address(
'192.168.1.1')
print(a.is_private)
print(a2.is_private)

Efekt:

False

True

Zamiast pola is_private możemy też użyć is_global:

import ipaddress
a=ipaddress.ip_address(
'46.41.128.110')
a2=ipaddress.ip_address(
'192.168.1.1')
print(a.is_global)
print(a2.is_global)

z oczywiście odwrotnym skutkiem:

True

False

Możemy też porównywać adresy IP:

import ipaddress
a=ipaddress.ip_address(
'46.41.128.110')
a2=ipaddress.ip_address(
'46.41.128.111')
print(a>a2)

Efekt:

False

Jeszcze jedna ciekawostka ( tu puszczenie oczka w stronę administratorów ) na temat ipaddress. Możemy wylistować wszystkie adresy z danej sieci. Tym razem będziemy musieli utworzyć obiekt innej klasy, dlatego też zamiast funkcji ip_adress potrzebujemy funkcji ip_network:

import ipaddress
for h in ipaddress.ip_network('192.168.2.0/24').hosts():
print(h)

Skutek działania:

192.168.2.1

192.168.2.2

192.168.2.3

192.168.2.4

192.168.2.5

192.168.2.6

…..

…..

Nie są to wszystkie możliwości tego modułu, wybrałem te które moim zdaniem są najbardziej przydatne. Zainteresowanych rozszerzeniem zapraszam do zapoznania się z dokumentacją.

 

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...