@ip = qw\10.0.0.1 10.1.2.3 192.168.12.5 77.75.0.1\; @subnets = qw\10.0.0.0/24 10.1.0.0/16 192.168.0.0/12\; foreach $ip (@ip){ @a = split /\./, $ip; $di = getIp(@a); foreach $subnet (@subnets){ ($a, $b) = getNetwork($subnet); if(($di >= $a) && ($di <= $b)){print "$ip in $subnet\n";} } } sub getIp { return ($_[0]*256*256*256) + ($_[1]*256*256) + ($_[2]*256) + $_[3] +; } sub getNetwork { @a = split(/[\/|\.]/, +shift); return (getIp(@a[0 .. 3]), (getIp(@a[0 .. 3]) + (2 ** (32 - $a[4]) +))); }
In reply to Re: finding if an ip is in a subnet
by Lennotoecom
in thread finding if an ip is in a subnet
by AltGrendel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |