Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alan Long                            2:5030/1082.72 30 Apr 2002  02:59:52
 To : Alexander Lozovoi
 Subject : Пpовеpка пpинадлежит ли IP подсети.
 -------------------------------------------------------------------------------- 
 
 * Originally from Alexander Lozovoi (2:5030/1604.604) to All.
 
  AL> Hyжно сделать пpовеpкy пpинадлежит ли IP адpес подсети, может
  AL> кто-то такое твоpил?
 
 Смотря как у тебя предоставлена подсетка...
 Если это пара значений $ip_1 = '192.168.23.0'; $ip_2 = '192.168.23.255'; а
 требуется проверить принадлежит-ли $ip = '192.168.23.23'; этому диапазону, то:
 if( aton( $ip ) >= aton( $ip_1 ) and aton( $ip ) <= aton( $ip_2 ) ) {
    print "принадлежит\n";
 }
 
 если у тебя предоставлено в виде адреса и сетки:
 $net = '192.168.23.0';
 $mask = '255.255.255.0''
 $ip =  '192.168.23.23';
 
 то:
 if( ( aton( $ip ) & aton( $mask ) ) == aton( $net ) ) {
    print "принадлежит\n";
 }
 
 Если у тебя сеть задана в виде CIDR:
 ($net,$mask) = cidr_to_netmask( '192.168.23/24' );
 $ip = '192.168.23.23';
 то задача сводится к предидущей.
 
 Все в принципе упирается в функции преобразования строчек содержащих IP адреса в
 целые числа над которыми можно производить те или иные действия... Тут есть два 
 пути - либо взять готовое (такой модуль есть, но я не помню его названия,
 посмотри по CPAN), либо изобретать велосипед, в таком случае простор для
 творчества огромен.
 
 Hачиная от:
 sub aton($) {  # написанно прямо сейчас и возможно сдержит ошибки
    my $a = shift;
    my $n = 0;
 
    foreach ( split(/\./, $a ) ) {
       $n = ($n << 8) & $_;
    }
    return $n;
 }
 
 До написания своих XS модулей.
 
  AL> Alexander
 
 -- 
 With best,
      Ъ-·    Ъ
      Е-ЧLaі\і <alan@x-rays.eu.org>
 
 --- timEd/386 1.10+
  * Origin: X - Rays Station (2:5030/1082.72)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Пpовеpка пpинадлежит ли IP подсети.   Alan Long   30 Apr 2002 02:59:52 
Архивное /ru.perl/4581ccdd4ee0.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional