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



以下是 3 个示例 IP 地址:

192.168.1.2

192.168.2.2

192.168.3.2

我希望此脚本仅在 IP 地址的第三个八位字节为 3 时才运行。如果客户端 IP 地址的第三个八位字节不是 3,则我希望脚本中止。

我假设你说的是Perl CGI脚本。如果是这样,请从 http://www.perlfect.com/articles/cgi_env.shtml:

REMOTE_ADDR

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

这对于记录对脚本的访问也很有用(对于 投票脚本可能想要的示例 按 IP 将选民记录在文件中 为了防止他们投票更多 超过一次)或阻止/行为 特定 IP 的不同 地址。(这可能是一个要求 在必须限制的脚本中 到您的本地网络,也许 为每个已知任务执行不同的任务 主持人)

因此,您应该能够解析 %ENV{'REMOTE_ADDR'} 并相应地调整您的执行。

if ($addr =~ /^d+.d+.3.d+$/) {
  # do your stuff
}
use NetAddr::IP;
if (my $addr = NetAddr::IP->new($src) and $addr->within(NetAddr::IP->new('192.168.3.0/24')) {
     ....
}
当然,这对于

更改为IPv6支持,扩展允许主机的子网,检查多个子网等将是微不足道的。

最新更新