IPprefix_by_netmask() {
#function returns prefix for given netmask in arg1
ipcalc -p 1.1.1.1 $1 | sed -n 's/^PREFIX=\(.*\)/\/\1/p'
}
结果:
$ IPprefix_by_netmask 255.255.255.0
/24
没有ipcalc的相同功能,在Solaris和Linux中测试过:
IPprefix_by_netmask() {
#function returns prefix for given netmask in arg1
bits=0
for octet in $(echo $1| sed 's/\./ /g'); do
binbits=$(echo "obase=2; ibase=10; ${octet}"| bc | sed 's/0//g')
let bits+=${#binbits}
done
echo "/${bits}"
}
2 回答
Linux的示例函数:
结果:
没有ipcalc的相同功能,在Solaris和Linux中测试过:
bash
中,将IP转换为长八进制字符串并对其位求和:输出
IPprefix_by_netmask 255.255.255.0
(任一功能):