|
有以下2个问题,好久没有解决,那位高手能够解决?
1 怎样用shell根据IP地址组织及子网掩码计算出该IP的网络号及广播地址
例如IP地址192.168.0.1,子网掩码255.255.255.0;网络号为192.168.0.0,广播地址为192.168.0.255
2 怎样用shell将子网掩码mask转换为十进制掩码prefix(mask)?
这里有个PERL类似脚本,可以提供一点思路
# mask_to_prefix(mask)
# Converts a mask like 255.255.255.0 to a prefix like 24
sub mask_to_prefix
{
return $_[0] =~ /^255\.255\.255\.(\d+)$/ ? 32-&log2(256-$1) :
$_[0] =~ /^255\.255\.(\d+)\.0$/ ? 24-&log2(256-$1) :
$_[0] =~ /^255\.(\d+)\.0\.0$/ ? 16-&log2(256-$1) :
$_[0] =~ /^(\d+)\.0\.0\.0$/ ? 8-&log2(256-$1) : 32;
}
sub log2
{
return int(log($_[0])/log(2));
} |
|