Простой скрипт обработки списка IP

Тема в разделе "Как сделать...", создана пользователем pavlenkora, 8 окт 2009.

Статус темы:
Закрыта.
  1. pavlenkora

    pavlenkora

    Регистр.:
    8 окт 2008
    Сообщения:
    195
    Симпатии:
    80
    Добрый день!
    Нужен простенький скрипт для выполнения такой задачи:
    Есть txt файл IP адресов вида
    111.111.111.0/5
    222.222.222.0/8
    На выходе нужно получить txt файл вида
    111.111.111.0
    111.111.111.1
    111.111.111.2
    111.111.111.3
    111.111.111.4
    111.111.111.5
    222.222.222.0
    222.222.222.1
    222.222.222.2
    222.222.222.3
    222.222.222.4
    222.222.222.5
    222.222.222.6
    222.222.222.7
    222.222.222.8
    Познаний в PHP практически нет, буду признателен если поможете в реализации данного скрипта!:thenks::thenks::thenks:
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    PHP:
    <?php
    $fpin 
    fopen("input.txt""r");
    $fpout fopen("output.txt""w");
    while (!
    feof($fpin)) {
        
    $buffer explode('/',trim(fgets($fpin64)));
        
    $ip ip2long($buffer[0]);
        for(
    $i 0;$i <= $buffer[1];$i++)
            
    fputs($fpout,long2ip($ip+$i)."\r\n");
    }
    fclose($handle);
    ?>
    во входном файле должен строго соблюдаться указанный вами формат
    обработку ошибок я не деле, за счет этого получился такой простой код
     
    pavlenkora нравится это.
  3. pavlenkora

    pavlenkora

    Регистр.:
    8 окт 2008
    Сообщения:
    195
    Симпатии:
    80
    Возможно ли переделать верхний скрипт, для
    Есть txt файл диапазона IP адресов вида
    194.143.148.0-194.143.149.255
    На выходе нужно получить txt файл вида
    194.143.148.0
    194.143.148.1
    194.143.148.2
    194.143.148.3
    194.143.148.4
    194.143.148.5
    194.143.148.6
    194.143.148.7
    194.143.148.8
    194.143.148.9
    194.143.148.10
    194.143.148.11
    194.143.148.12
    194.143.148.13
    ...................
    194.143.149.248
    194.143.149.249
    194.143.149.250
    194.143.149.251
    194.143.149.252
    194.143.149.253
    194.143.149.254
    194.143.149.255
     
  4. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    а поразмыслить немного самому?
    PHP:
    <?php 
    $fpin 
    fopen("input.txt""r"); 
    $fpout fopen("output.txt""w"); 
    while (!
    feof($fpin)) { 
        
    $buffer explode('-',trim(fgets($fpin64))); 
        
    $ip1 ip2long($buffer[0]); 
        
    $ip2 ip2long($buffer[1]); 
        for(
    $i $ip1;$i <= $ip2;$i++) 
            
    fputs($fpout,long2ip($i)."\r\n"); 

    fclose($handle); 
    ?>
    опять-таки строгость входных даных обязательна
     
    pavlenkora нравится это.
  5. pavlenkora

    pavlenkora

    Регистр.:
    8 окт 2008
    Сообщения:
    195
    Симпатии:
    80
    Вот нашел скрипт который проставляет в начале и в конце строки нужные значения

    PHP:
    <?php
    $file 
    file('src.txt');
    $nRows count($file);

    $cLeft '123';
    $cRight =  '123';

    $fp fopen('result.txt''w');

    for ( 
    $i=0$i<$nRows$i++ ) 
    {
        
    $line $cLeft.' '.trim($file[$i]).' '.$cRight."\n";
        
        
    fwrite($fp$line);
    }

    fclose($fp);
    ?>
    Но к сажелению он не работает, подскажите где ошибка?
    нужно чтоб скрипт проставлял Порт в конце строки, тоесть
    на входе IP
    на выходе IP:3128
     
  6. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    понятие не работает, очень растяжимое. подробней нужно.

    для начала попробуй заменить
    PHP:
    $line $cLeft.' '.trim($file[$i]).' '.$cRight."\n";
    на

    PHP:
    $line trim($file[$i]).':3128'."\n";
     
    pavlenkora нравится это.
Статус темы:
Закрыта.