У меня есть входной файл с адресами 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
Как я могу преобразовать диапазоны адресов в сетевые маски? Результат должен быть:
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
источник
источник
ipcalc
встроенных. ;-)Ответы:
Сначала вам нужно будет установить пакет, чтобы сделать преобразование
Теперь вы можете сделать это с помощью этого небольшого скрипта (обратите внимание, что он не работает, если вы заключите переменную в кавычки):
или более читабельно
источник
Возможно, неудивительно, что для этого существует perl-модуль CPAN Net :: CIDR .
Так, например:
Модуль доступен в Ubuntu после установки
libnet-cidr-perl
пакета.NB. Я не подтвердил ваш вклад или результаты.
источник