Re: Диапазон IP

From
Nikolay Pichtin (2:5056/30)
To
Yurik Shestakov
Date
2005-06-18T17:31:48Z
Area
RU.PERL
                           Добренький вечерок Yurik !

 NP>>  Необходимо диапазон IP адресов поместить в массив.
 NP>>  Есть указанный диапазон
 NP>> ip_strt=127.0.0.1
 NP>> ip_end=127.0.0.255
 NP>> или
 NP>> ip_start=127.0.0.1
 NP>> ip_end=127.0.1.255

 NP>> Надо все IP из этого диапазона поместить в массив.

 ys> Не совсем ясна постановка задачи. Что значит "все IP из этого
 ys> диапазона" ? Это множество из (127.0.0.1, 127.0.0.2, ...,
 ys> 127.0.0.255), или подразумевается какая-то фильтрация входного потока
 ys> данных по ip-адресу на принадлежность к диапазон?

Ни какой фильтрации. Надо всё множество IP.

 NP>> Кроме того надо проверять возможность создания такого диапазона.
 NP>> При ошибках в указании старта и конца выводить соответствующее
 NP>> сообщение. Недопустимо ip_start=127.0.0.100 ip_end=127.0.0.1 и
 NP>> т.п.

 ys> В общем случае следует привести ip-адрес из текстовой формы в числовую
 ys> для последующих операций над ip-адресами.  Есть 2 пути:
 ys>   1) use Socket; функция inet_aton:
 ys>      $n_ip = unpack('N', inet_aton('127.0.0.1'));
 ys>   2) $n_ip = unpack('N',pack('C4',split/\./, '127.0.0.1'));

 ys> Второй способ более тупой и менее функциональный, т.к. inet_aton()
 ys> может отресолвить строку в ip-адрес.

Попробую.
Вобщем-то задача такая:
определяется диапазон IP-адресов. Надо их проверить
на наличие открытого 21 порта.
Вот и хочу сделать перебор IP-адресов, но с проверкой от дурака.

 ys> p.s. Для поиска вхождения ip-адреса в один из диапазонов адресов (в
 ys> сетку),
 ys>      следует применять Net::Patricia, если список сеток большой.

Похоже, что по Windows нет такого модуля.

* Опыт отнюдь не мешает нам повторить прежнюю глупость, но мешает получить от нее прежнее удовольствие!!.
-- Николай
----------------------------------------------------------------------
---
 * Origin: Истина - это вовсе не то, что можно убедительно доказать (2:5056/30)
SEEN-BY: 450/208 452/25 100 454/9 455/15 461/33 74 106 640 464/34 465/204
SEEN-BY: 467/24 469/125 200 478/44 65 550/5068 4600/126 4614/9 4623/56 4625/9
SEEN-BY: 4626/100 4632/10 4635/99 1024 4641/444 4642/27 48 4657/50 5001/50
SEEN-BY: 5002/76 5002 5003/34 5010/53 146 5011/13 5015/4 28 214 5020/52 115
SEEN-BY: 5020/128 133 150 175 486 600 642 744 794 921 958 968 982 1100 1169
SEEN-BY: 5020/1212 1234 1626 1642 1653 1826 1829 1930 2044 2200 2345 2908 4400
SEEN-BY: 5020/4441 5021/2 5023/11 5024/1 73 5025/19 5030/69 195 382 436 611
SEEN-BY: 5030/920 1016 1039 1520 1688 5031/7 63 5032/11 20 5033/21 35 5034/8
SEEN-BY: 5035/38 63 5036/13 5037/21 36 5038/4 5040/33 47 5041/4 5045/7 42
SEEN-BY: 5047/47 5049/6 157 5050/9 41 5051/35 5053/16 38 5054/1 8 9 35 36 37
SEEN-BY: 5054/45 50 66 67 81 85 5055/177 5056/12 16 30 38 52 5058/77 5059/2 9
SEEN-BY: 5059/20 5060/90 5062/4 7 5063/51 5064/7 35 5070/26 66 5071/22 5075/37
SEEN-BY: 5077/70 5079/49 5083/13 5090/23 105 5093/4 27 33 5096/18 5100/113
SEEN-BY: 6023/1 6033/2727 6070/5
PATH: 5056/30 16 5020/52 5054/1 37