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

Szkolenie Python od podstaw, przez analizę danych, do machine learning w JSystems

Ten kurs daje Ci solidne podstawy Pythona. Jeśli chcesz pójść dalej i pod okiem trenera dojść od pierwszej linijki kodu do własnego modelu uczenia maszynowego, sprawdź nasze pięciodniowe szkolenie Python od podstaw, przez analizę danych, do machine learning. Pierwsze trzy dni to Python w praktyce: typy i kolekcje, instrukcje warunkowe i pętle, funkcje, moduły i pakiety, pliki tekstowe, usługi sieciowe oraz praca z bazą PostgreSQL. Czwarty dzień to analiza danych w pandas (wczytywanie CSV, TSV i XLS, filtrowanie, agregacje, statystyki) i wizualizacja w Matplotlib, Seaborn oraz Plotly. Piąty dzień to uczenie maszynowe w scikit-learn: regresja liniowa i logistyczna, drzewa decyzyjne, las losowy, XGBoost, walidacja predykcji, dobór hiperparametrów i przeciwdziałanie przeuczeniu. Szkolenie ma terminy gwarantowane, czyli odbywa się niezależnie od wielkości grupy.

Szkolenie Python od podstaw, przez analizę danych, do machine learning

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Do czego służy moduł ipaddress w Pythonie?
Moduł ipaddress pozwala operować na adresach IP: sprawdzać, czy dany ciąg jest poprawnym adresem, czy należy do sieci prywatnej lub publicznej, porównywać adresy oraz listować hosty z podanej sieci. Ułatwia zadania administracyjne związane z adresacją.
Jak sprawdzić, czy tekst jest poprawnym adresem IP?
Utwórz obiekt funkcją ipaddress.ip_address, podając adres jako tekst. Na tym etapie następuje walidacja. Gdy podasz coś, co adresem IP nie jest, otrzymasz wyjątek ValueError z informacją, że wartość nie wygląda jak adres IPv4 ani IPv6.
Jak odróżnić adres prywatny od publicznego?
Na obiekcie adresu sprawdzasz pole is_private, które zwraca True dla adresów z sieci prywatnej, na przykład 192.168.1.1. Odwrotnej informacji dostarcza pole is_global, zwracające True dla adresów publicznych i False dla prywatnych.
Jak wylistować wszystkie hosty z danej sieci?
Zamiast ip_address użyj funkcji ip_network, podając adres sieci z maską, na przykład 192.168.2.0/24. Metoda hosts na tym obiekcie zwraca kolejne adresy hostów z tej sieci, po których możesz iterować pętlą.
Czy można porównywać adresy IP między sobą?
Tak, obiekty adresów utworzone przez ipaddress obsługują operatory porównania. Możesz sprawdzić, czy jeden adres jest większy od drugiego, co pozwala je sortować i porządkować według wartości numerycznej adresu.

Komentarze (0)

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

Brak komentarzy...