Chinaunix
标题:
关于网络掩码的转换
[打印本页]
作者:
meteor_rain
时间:
2003-12-25 11:11
标题:
关于网络掩码的转换
我想把“192.168.0.1/255.255.255.0”这样的形式的主机改成“192.168.0.1/24”的形式,请问如何转?如果掩码不规则,比如“255.255.255.128”这样的呢?
作者:
xulee
时间:
2003-12-25 11:30
标题:
关于网络掩码的转换
解绫还需系绫人呀,转换成二进制
作者:
網中人
时间:
2003-12-26 02:13
标题:
关于网络掩码的转换
try:
#!/bin/bash
all=(${@//[!0-9]/ })
[ "${#all[@]}" != "8" ] && {
echo "Usage: "
echo "${0##*/} ip.ip.ip.ip/mask.mask.mask.mask"
exit 1
}
get_mask () {
unset mask
while [ "$1" ]; do
bit=$(echo "obase=2;ibase=10;$1" |bc)
shift
mask="$mask$bit"
done
mask=${mask%%0*}
echo ${#mask}
}
maskpart=${@##*/}
echo "${@%%/*}/$(get_mask ${maskpart//./ })"
复制代码
作者:
網中人
时间:
2003-12-26 10:01
标题:
关于网络掩码的转换
好人做到底,再送你一個將 25 換成 255.255.255.128 的 script 如何:
#!/bin/bash
all=(${@//[!0-9]/ })
[ "${#all[@]}" != "5" ] || echo ${@##*/} | grep -q '[^0-9]' && {
echo "Usage: "
echo "${0##*/} ip.ip.ip.ip/mask_bit"
exit 1
}
m_bit=${@##*/}
[ "$m_bit" -gt 32 ] && {
echo "Error: mask ($m_bit) is over range. maximum 32."
exit 2
}
ones=$((m_bit / 8))
one_mod=$((m_bit % 8))
zeros=$(((32 - m_bit) / 8))
[ "$ones" -ge 1 ] && {
for ((i=1;i<=$ones;i++)); do
left=$left.255
done
}
[ "$one_mod" -ge 1 ] && {
for ((i=1;i<=$one_mod;i++)); do
mid_one=${mid_one}1
done
for ((i=1;i<=$((8 - one_mod));i++)); do
mid_zero=${mid_zero}0
done
middle=.$(echo "ibase=2;$mid_one$mid_zero" | bc)
}
[ "$zeros" -ge 1 ] && {
for ((i=1;i<=$zeros;i++)); do
right=$right.0
done
}
mask=$left$middle$right
echo "${@%%/*}/${mask#.}"
复制代码
此外,我之前也寫過一個計算 net_id 及 broadcast 的 script ,
若有興趣,一併參考:
http://bbs.chinaunix.net/forum/viewtopic.php?t=196402
作者:
meteor_rain
时间:
2003-12-26 10:27
标题:
关于网络掩码的转换
多谢大侠!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2