Perl - 决定是否根据IP地址的第三个八位字节运行脚本

时间:2011-05-19 17:28:31

标签: perl ip

以下是3个示例IP地址:

  

192.168.1.2

     

192.168.2.2

     

192.168.3.2

我希望这个脚本只在ip地址的第三个octate为3时运行。如果客户端的ip地址的第三个octate不是3,那么我希望脚本中止。

3 个答案:

答案 0 :(得分:3)

我假设您正在谈论Perl CGI脚本。如果是,请从http://www.perlfect.com/articles/cgi_env.shtml

开始
  

REMOTE_ADDR

     

客户端发出请求的IP地址。

     

这对于记录对脚本的访问非常有用(for   投票脚本可能想要的例子   通过他们的IP在一个文件中记录选民   为了防止他们投票更多   比一次)或阻止/行为   不同的特定IP   不会忽略。 (这可能是一项要求   在必须限制的脚本中   到你的本地网络,也许吧   为每个已知的执行不同的任务   主机)

所以你应该能够解析%ENV {'REMOTE_ADDR'}并相应地调整你的执行。

答案 1 :(得分:2)

if ($addr =~ /^\d+\.\d+\.3\.\d+$/) {

  # do your stuff

}

答案 2 :(得分:0)

use NetAddr::IP;
if (my $addr = NetAddr::IP->new($src) and $addr->within(NetAddr::IP->new('192.168.3.0/24')) {
     ....
}

当然,改变IPv6支持,扩展允许主机的子网,检查多个子网等等,这当然是微不足道的。