Диапазон IP в список IP

Discussion in 'Болталка' started by alextrust, 21 Aug 2013.

  1. alextrust

    alextrust Member

    Joined:
    29 Mar 2010
    Messages:
    292
    Likes Received:
    26
    Reputations:
    11
    Есть список диапазонов
    99.11.789.0 - 99.22.889.255
    10.11.789.0 - 10.22.889.255
    пару сотен строк
    Подскажите чем можно сконвертировать этот список в
    список ip адресов ?
    вот так что бы было
    99.11.789.0
    99.11.789.1
    99.11.789.2
    и тд
    спасибо :)
     
  2. alkos

    alkos Moderator

    Joined:
    28 Mar 2007
    Messages:
    1,153
    Likes Received:
    291
    Reputations:
    271
    Написать быстренько скриптик на любом известном тебе языке программирования. Задача не выходит за рамки базовых школьных знаний.
     
    _________________________
  3. alextrust

    alextrust Member

    Joined:
    29 Mar 2010
    Messages:
    292
    Likes Received:
    26
    Reputations:
    11
    к сожалению не знаю ни одного
    поэтому тут и запостил)
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    957
    Likes Received:
    997
    Reputations:
    325
    это лекго, представь адрес в виде DWORD
    то есть 0x12345678 это 18.52.86.120 - тока наоборот порядок
    и просто итерируй его

    0x12345679 собсна 18.52.86.121 итд
     
  5. Stalker5

    Stalker5 Member

    Joined:
    22 Feb 2013
    Messages:
    149
    Likes Received:
    7
    Reputations:
    0
    Да что вы пристали к нему? Ну не знает чел если ничего, как и я. :)
    TC, обратись к любому программисту из раздела "Ищу работу". Тут таких много сидит.
     
  6. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    913
    Likes Received:
    449
    Reputations:
    722
    PHP:
    <?php
    function ExpandIP($start_ip$end_ip)
    {
        
    $quad1 explode(".",$start_ip);
        
    $quad2 explode(".",$end_ip);
        
    reset ($quad1);
        while (list (
    $k$v) = each ($quad1))
        {
             
    $quad1[$k] = intval($v);
             if (
    $quad1[$k] < || $quad1[$k] > 255) return array(-2);
        }
        
    reset ($quad2);
        while (list (
    $k$v) = each ($quad2))
        {
             
    $quad2[$k] = intval($v);
             if (
    $quad2[$k] < || $quad2[$k] > 255) return array(-2);
        }
        
    $startip_long sprintf("%u",ip2long($start_ip));
        
    $endip_long sprintf("%u",ip2long($end_ip));
        
    $ip = array();
        
    $k 0;
        for (
    $i $startip_long$i <= $endip_long$i++)
        {
            
    $temp long2ip($i);
            
    $thisQuad explode(".",$temp);
            if (
    $thisQuad[3] > && $thisQuad[3] < 255)
                
    $ip[$k++] = $temp;
        }
        return 
    $ip;

    print_r(ExpandIP("127.0.0.1","127.0.2.254"));
    ?>
    Вывод:
    Code:
    Array
    (
        [0] => 127.0.0.1
        [1] => 127.0.0.2
        [2] => 127.0.0.3
        [3] => 127.0.0.4
        [4] => 127.0.0.5
        [5] => 127.0.0.6
        [6] => 127.0.0.7
        [7] => 127.0.0.8
        [8] => 127.0.0.9
        [9] => 127.0.0.10
        [10] => 127.0.0.11
        ...
        ...
        ...
        [755] => 127.0.2.248
        [756] => 127.0.2.249
        [757] => 127.0.2.250
        [758] => 127.0.2.251
        [759] => 127.0.2.252
        [760] => 127.0.2.253
        [761] => 127.0.2.254
    )
     
    _________________________
  7. alextrust

    alextrust Member

    Joined:
    29 Mar 2010
    Messages:
    292
    Likes Received:
    26
    Reputations:
    11
    VY_CMa
    Спасибо)
    но такое тоже есть
    мне бы брать диапазон из списка
    и сохранят ипы в список
    просто список большой в несколько сотен
    целая страна)
     
  8. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    742
    Likes Received:
    73
    Reputations:
    19
    PHP:
    <?php 

    $IP_LIST 
    "ip.txt";

    function 
    ExpandIP($start_ip$end_ip

        
    $quad1 explode(".",$start_ip); 
        
    $quad2 explode(".",$end_ip); 
        
    reset ($quad1); 
        while (list (
    $k$v) = each ($quad1)) 
        { 
             
    $quad1[$k] = intval($v); 
             if (
    $quad1[$k] < || $quad1[$k] > 255) return array(-2); 
        } 
        
    reset ($quad2); 
        while (list (
    $k$v) = each ($quad2)) 
        { 
             
    $quad2[$k] = intval($v); 
             if (
    $quad2[$k] < || $quad2[$k] > 255) return array(-2); 
        } 
        
    $startip_long sprintf("%u",ip2long($start_ip)); 
        
    $endip_long sprintf("%u",ip2long($end_ip)); 
        
    $ip = array(); 
        
    $k 0
        for (
    $i $startip_long$i <= $endip_long$i++) 
        { 
            
    $temp long2ip($i); 
            
    $thisQuad explode(".",$temp); 
            if (
    $thisQuad[3] > && $thisQuad[3] < 255
                
    $ip[$k++] = $temp
        } 
        return 
    $ip
    }  

    $range_list file($IP_LISTFILE_IGNORE_NEW_LINES);

    if (
    false === $range_lis) {
        die(
    "Can't open file: ".$IP_LIST);
    }

    foreach (
    $range_list as $range)
    {
        list(
    $range_start$range_end) = explode('-'$range);
        
    file_put_contents('ips.txt'join('\n'ExpandIP($range_start$range_end)), FILE_APPEND);
    }

    ?>
    Вот скрипт от VY_CMa который работает с списком диапов.
     
  9. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    127
    Likes Received:
    8
    Reputations:
    0
    ну решение можно в excel придумать)
     
Loading...