Mam plik wejściowy z adresami IPv4:
94.228.16.0 - 94.228.25.255
94.241.136.0/24
94.241.136.0 - 94.241.136.255
94.29.128.0/17
94.29.128.0 - 94.29.191.0
94.29.192.0 - 94.29.255.0
94.74.181.0/24
94.74.181.0 - 94.74.181.31
94.74.181.128 - 94.74.181.255
Jak przekonwertować zakresy adresów na maski sieciowe? Wynik powinien być:
94.228.16.0/21
94.241.136.0/24
94.241.136.0/24
94.29.128.0/17
94.29.128.0/19
94.29.192.0/19
94.74.181.0/24
94.74.181.0/27
94.74.181.128/25
command-line
networking
bash
Oleksii
źródło
źródło
ipcalc
wbudowanego. ;-)Odpowiedzi:
Najpierw musisz zainstalować pakiet, aby wykonać konwersję
Teraz możesz to zrobić za pomocą tego małego skryptu (pamiętaj, że nie działa, jeśli cytujesz zmienną):
lub bardziej czytelnie
źródło
Być może nie jest zaskakujące, że istnieje do tego moduł perlowy CPAN Net :: CIDR .
Na przykład:
Moduł jest dostępny w systemie Ubuntu po zainstalowaniu
libnet-cidr-perl
pakietu.NB I nie walidacji wprowadzonych danych lub wyników.
źródło