Blog JSystems - z miłości do programowania

Moduł ipaddress



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ą.


 

Przyjdź do nas na szkolenie z języka Python! Mamy szereg szkoleń w ofercie, od podstawowych po aplikacje webowe z użyciem Django, analizę danych, tesowanie, machine learning i wiele innych.
Sprawdź dostępne szkolenia Python
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu!