Получить списки ip в текстовый файл из диапазонов ip в текстовом файле

Статус
В этой теме нельзя размещать новые ответы.

silmarion

Полезный
Регистрация
21 Июн 2012
Сообщения
194
Реакции
19
Добрый день, собственно, вопрос в теме.

Как можно сделать?
Имеем текстовый файл, с диапазонами ip
Каждый диапазон с новой строки.

Получить нужно текстовый файл, в котором все ip из всех диапазонов с новой строки

Пример:
Файл с диапазонами:
192.168.1.1-192.168.1.255
192.168.0.1-192.168.0.255

Получить нужно:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
...
192.168.1.255
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
...
192.168.0.255
 
Могу описать примерный алгоритм.
Считываем строки, разбиваем на две подстроки через '-', чтобы получились начало и конец диапазона.
Далее, есть замечательная функция перевода ip в числовое представление. Например, в php это делает функция ip2long. Эта функция, наверняка, есть и в других языках.
Она вычисляется по формуле ip = (первая часть ip * 16777216) + (вторая часть * 65536) + (третья часть * 256) + (четвертая часть).
Делаем перевод начала и конца диапазона в числовое значение, затем циклом перебираем инты и переводим их обратно в строковое представление.
 
Могу описать примерный алгоритм.
Считываем строки, разбиваем на две подстроки через '-', чтобы получились начало и конец диапазона.
Далее, есть замечательная функция перевода ip в числовое представление. Например, в php это делает функция ip2long. Эта функция, наверняка, есть и в других языках.
Она вычисляется по формуле ip = (первая часть ip * 16777216) + (вторая часть * 65536) + (третья часть * 256) + (четвертая часть).
Делаем перевод начала и конца диапазона в числовое значение, затем циклом перебираем инты и переводим их обратно в строковое представление.

Дольше было писать алгоритм по-моему, чем сам код))

Для просмотра ссылки Войди или Зарегистрируйся

PHP:
<html>
<body>
<form method=post action="">
   <textarea name="input" rows=10 cols=160><? if (isset($_POST['input'])) echo $_POST['input']?></textarea><br>
   <input type="submit" value="GoGoGo">
<h3>Результат</h3>
   <textarea rows=30 cols=160>
<?
if (isset($_POST['input'])) {
  $lines=explode ("\r\n",$_POST['input']);

  foreach ($lines as $line) {
    $l=explode('-',$line);
    $from=ip2long($l[0]);
    $to=ip2long($l[1]);
    for ($i=$from;$i<=$to;$i++)
        echo long2ip($i)."\r\n";
   }
}?>
</textarea>
</form>
</body>
</html>

P.S. Для просмотра ссылки Войди или Зарегистрируйся, если вдруг есть желание магарыч выставить за помощь - это только приветствуется ;)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху