LINUX.ORG.RU

Подскажите генератор диапазона IP

 , ,


0

1

Есть довольно большой файл, содержащий диапазоны IP:

1.0.1.0-1.0.3.255
1.0.8.0-1.0.15.255
1.0.32.0-1.0.63.255
1.1.0.0-1.1.0.255
1.1.2.0-1.1.63.255
1.2.0.0-1.2.2.255
1.2.4.0-1.2.127.255
1.3.0.0-1.3.255.255
1.4.1.0-1.4.127.255
1.8.0.0-1.8.255.255

Нужен генератор, преобразующий диапазоны в IP-адреса.

Подскажите, пожалуйста, если кто знает.

Заранее благодарю за ответ.

★★★★★

Пишется в десять строчек. Например, преобразуешь граничные IP в числа, и в цикле от первого до последнего преобразуешь числа в IP. Типа как-то так:

while not eof:
  r = input()
  (ip1, ip2) = r.split("-")
  for i in range(ip2int(ip1), ip2int(ip2)+1):
    print(int2ip(i))
while not eof и функции ip2int и int2ip сам реализуешь, мне лень.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 1)
Ответ на: комментарий от hizel

IPv6 will be heck. Heck, I tell ya!

На самом деле, по большому счёту без разницы, что IPv4, что IPv6 - этот метод и там, и там подойдёт (но его неоптимальность более заметна на IPv6, это да).

P.S. а, посмотрел внимательнее - они там и адресную арифметику сделали, не только раскрытие подсетей, так что да, юзай ipaddress, будет тебе щастье.

tiandrey ★★★★★
()
Последнее исправление: tiandrey (всего исправлений: 2)
Ответ на: комментарий от bl

ох и говнокод я нагенерил.
если в диапазон будет заканчиваться не .0.255, а например .0.128, то полздиапазона не будет напечатано.
но мне лень чото делать

bl ★★★
()
$ ipcalc -r 1.0.1.0-1.0.3.255
deaggregate 1.0.1.0 - 1.0.3.255
1.0.1.0/24
1.0.2.0/23

Большинство вменяемого современного софта понимает именно эту нотацию. Списки не нужны.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)

Рецепты тебе уже подсказали, а зачем такое нужно ? Это же будет охфигенной длины список!

Я бы понял, если бы нужно было диапазоны адресов в ip-сети преобразовать как это предложил beastie.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.