Merhaba,
Verilen bir ip adresinin verilen bir subnet içinde olup olmadığını anlamak için basit bir perl scripti.
$ip = 192.168.10.11
$subnet = 192.168.10.0/24
sub checkip {
my ($ip, $subnet) = @_;
my $result = 0;
my @iparr = split(/\./, $ip);
my $ipval = $iparr[0] * 2**24 + $iparr[1] * 2**16 + $iparr[2] * 2**8 + $iparr[3];
my @temparr = split(/\//, $subnet);
my $ipsub = $temparr[0];
my $netmask = $temparr[1];
my @ipsubarr = split(/\./, $ipsub);
$ip2val = $ipsubarr[0] * 2**24 + $ipsubarr[1] * 2**16 + $ipsubarr[2] * 2**8 + $ipsubarr[3];
if( $ipval >> (32-$netmask) == $ip2val >> (32-$netmask) ) {
$result = 1;
}
return $result;
}
Sonuç değeri olarak $result=1 geldiğinde ip adresinin ilgili subnete ait olduğunu anlamış oluruz.