Perl - решите, запускать ли скрипт на основе третьего октета IP-адреса - PullRequest
0 голосов
/ 19 мая 2011

Вот 3 примера IP-адресов:

192.168.1.2

192.168.2.2

192.168.3.2

Iхотите, чтобы этот скрипт выполнялся ТОЛЬКО, если третья октата ip-адреса равна 3. Если третья октата ip-адреса клиента не равна 3, я бы хотел, чтобы скрипт был прерван.

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

Я предполагаю, что вы говорите о скрипте Perl CGI.Если это так, с http://www.perlfect.com/articles/cgi_env.shtml:

REMOTE_ADDR

IP-адрес, с которого клиент отправляет запрос.

Это может быть полезно либо для регистрации доступа ксценарий (например, сценарий голосования может захотеть регистрировать избирателей в файле по их IP-адресу, чтобы они не могли голосовать более одного раза) или блокировать / вести себя по-разному для определенных IP-адресов.(это может быть требованием в сценарии, который должен быть ограничен вашей локальной сетью, и, возможно, выполнять разные задачи для каждого известного хоста)

Таким образом, вы сможете анализировать% ENV {'REMOTE_ADDR'} и скорректируйте исполнение соответственно.

2 голосов
/ 19 мая 2011
if ($addr =~ /^\d+\.\d+\.3\.\d+$/) {

  # do your stuff

}
0 голосов
/ 20 мая 2011
use NetAddr::IP;
if (my $addr = NetAddr::IP->new($src) and $addr->within(NetAddr::IP->new('192.168.3.0/24')) {
     ....
}

Это, конечно, будет тривиально: перейти на поддержку IPv6, расширить подсеть разрешенного хоста, проверить несколько подсетей и т. Д.

...