免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jieyancai
打印 上一主题 下一主题

[网络相关] 求一个shell,根据IP和掩码位计算出网段 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2012-11-10 13:29 |显示全部楼层
#!bin/bash
#program:calculate the ip from a.txt
#history:
#NOV 10 2012 xiao
rm -f /root/scripts/b.txt
function cal(){
i=2
for ((k=`echo $n`;k>1;k=k-1))
do
i=$(($i*2))
done
i=$(($i-1))
}
nu=`cat /root/scripts/a.txt`
for num in $nu
do
ip=`echo ${num%/*}`
netmask=`echo ${num#*/}`
ip1=`echo $ip|cut -d '.' -f1`
ip2=`echo $ip|cut -d '.' -f2`
ip3=`echo $ip|cut -d '.' -f3`
ip4=`echo $ip|cut -d '.' -f4`
if [ $netmask -gt "8" ]&&[ $netmask -lt "16" ]
then
n=$((16-$netmask))
cal
ip2=$(($ip2+$i))
ip3=255
ip4=255
fi
if [ $netmask -gt "16" ]&&[ $netmask -lt "24" ]
then
n=$((24-$netmask))
cal
ip3=$(($ip3+$i))
ip4=255
fi
if [ $netmask -gt "24" ]&&[ $netmask -lt "32" ]
then
n=$((32-$netmask))
cal
ip4=$(($ip4+$i))
fi
if [ $netmask -lt "8" ]
then
n=$((8-$netmask))
cal
ip1=$(($ip1+$i))
ip2=255
ip3=255
ip4=255
fi
if [ $netmask -gt "32" ]
then
echo "$nu netmaask wrong!!"
fi
endip=$ip1.$ip2.$ip3.$ip4
echo "$ip-$endip" >> /root/scripts/b.txt
done
exit 0
有点长,不过应该比较容易看懂,经过测试是木有问题的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP