![]() ![]() |
Интересные решения Perl. Вопросы и ответыКак работать с CIDR записью IP адресов в Perl?CIDR — Classless Inter-Domain Routing — бесклассовая адресация — метод IP-адресации, позволяющий гибко управлять пространством IP-адресов, не используя жесткие рамки классовой адресации. Чтобы работать с блоками IP-адресов, заданных через CIDR для Perl есть модуль NET::CIDR. Документация к модулю довольно подробна и вы без труда найдете там, например, способы конвертации диапазонов IP-адресов в CIDR и обратно. Практический пример - проверка принадлежности IP-адреса к Кировской области #!/usr/bin/perl
use strict;
use Net::CIDR;
my @kirovIPS = (
'213.24.213.0/24', '91.144.148.0/22', '91.144.172.0/22',
'92.255.224.0/20', '94.181.192.0/18', '188.187.249.0/24',
'109.194.40.0/21', '91.228.124.0/24', '77.72.136.0/21',
'92.39.64.0/20', '178.141.0.0/16', '10.40.0.0/13',
'79.175.28.0/24', '89.207.72.0/21', '213.24.252.224-213.24.252.231',
'217.106.150.144-217.106.150.151', '217.106.150.88-217.106.150.95',
'91.149.96.0/22', '81.4.194.0-81.4.194.247', '81.4.193.0/24',
'81.4.203.0-81.4.203.31', '85.93.32.0/19', '89.254.192.0/18',
'94.241.192.0/18', '178.44.0.0/17', '217.9.144.0/20');
$ENV{'REMOTE_ADDR'} ||= '127.0.0.1';
if (Net::CIDR::cidrlookup($ENV{'REMOTE_ADDR'}, @kirovIPS)) {
print $ENV{'REMOTE_ADDR'} . " is Kirov IP\n";
} else {
print $ENV{'REMOTE_ADDR'} . " is NOT Kirov IP\n";
}
Опубликовано: 28 августа 2011 года.
|
|
© Алексей Кощеев, г.Киров, 2001-2023 |
|