shell脚本:ip/mask 转换为 ip1-ip2
来源:互联网 发布:paxos算法 视频 编辑:程序博客网 时间:2024/06/16 13:44
#!/bin/sh
ip="192.168.12.23"
mask="23"
echo "input:${ip}/${mask}"
msk_end()
{
declare -i FULL_MASK_INT=4294967295
declare -i RIGHT_MOVE=$1
declare -i N="${FULL_MASK_INT} >> ${RIGHT_MOVE}"
declare -i H1="$N & 0x000000ff"
declare -i H2="($N & 0x0000ff00) >> 8"
declare -i L1="($N & 0x00ff0000) >> 16"
declare -i L2="($N & 0xff000000) >> 24"
echo "$L2.$L1.$H2.$H1"
}
msk()
{
#0xFFFFFFFF
declare -i FULL_MASK_INT=4294967295
declare -i MASK_LEN=$1
declare -i LEFT_MOVE="32 - ${MASK_LEN}"
#if mask is 24, N is 0xFFFFFF00
declare -i N="${FULL_MASK_INT} << ${LEFT_MOVE}"
declare -i H1="$N & 0x000000ff"
declare -i H2="($N & 0x0000ff00) >> 8"
declare -i L1="($N & 0x00ff0000) >> 16"
declare -i L2="($N & 0xff000000) >> 24"
echo "$L2.$L1.$H2.$H1"
ip="192.168.12.23"
mask="23"
echo "input:${ip}/${mask}"
msk_end()
{
declare -i FULL_MASK_INT=4294967295
declare -i RIGHT_MOVE=$1
declare -i N="${FULL_MASK_INT} >> ${RIGHT_MOVE}"
declare -i H1="$N & 0x000000ff"
declare -i H2="($N & 0x0000ff00) >> 8"
declare -i L1="($N & 0x00ff0000) >> 16"
declare -i L2="($N & 0xff000000) >> 24"
echo "$L2.$L1.$H2.$H1"
}
msk()
{
#0xFFFFFFFF
declare -i FULL_MASK_INT=4294967295
declare -i MASK_LEN=$1
declare -i LEFT_MOVE="32 - ${MASK_LEN}"
#if mask is 24, N is 0xFFFFFF00
declare -i N="${FULL_MASK_INT} << ${LEFT_MOVE}"
declare -i H1="$N & 0x000000ff"
declare -i H2="($N & 0x0000ff00) >> 8"
declare -i L1="($N & 0x00ff0000) >> 16"
declare -i L2="($N & 0xff000000) >> 24"
echo "$L2.$L1.$H2.$H1"
}
ipend()
{
local cc=""
for i in 1 2 3 4
do
let "aa = $(echo $1 | cut -d '.' -f $i) | $(echo $2 | cut -d '.' -f $i)"
if [ -n "$cc" ]
then
cc="$cc.$aa"
else
cc="$aa"
fi
done
echo "$cc"
}
ipstart()
{
local cc=""
for i in 1 2 3 4
do
let "aa = $(echo $1 | cut -d '.' -f $i) & $(echo $2 | cut -d '.' -f $i)"
if [ -n "$cc" ]
then
cc="$cc.$aa"
else
cc="$aa"
fi
done
echo "$cc"
}
maskstart=$(msk $mask)
maskend=$(msk_end $mask)
dd=$(ipstart $ip $maskstart)
ddend=$(ipend $ip $maskend)
echo "output:${dd}-${ddend}"
0 0
- shell脚本:ip/mask 转换为 ip1-ip2
- ip2
- 将DOS批处理文件转换为Shell脚本
- 将DOS批处理文件转换为Shell脚本
- 路由器的一个端口(ip1~ip2)下的所有终端(在没有路由器的情况下)构成一个局域网?
- IP校验shell脚本
- 将shell脚本转换为二进制的可执行文件
- 将DOS批处理文件转换为Shell脚本(ZHUAN)
- shell转换IP
- shell脚本格式转换
- 设置IP别名Shell脚本
- Shell脚本局域网IP扫描
- shell脚本设置固定IP
- IP转换为整型
- 用Shell脚本对IP的字符串与整数形式进行相互转换
- shell数字转换成IP
- IP Subnet Mask Numbers
- Shell脚本大小写字符串转换
- iOS打包成.a静态库
- JSON数据转换
- 死锁查看处理(二)
- Qt中快捷键使用
- 斐波那契数列 求第n个数、前n个数之和
- shell脚本:ip/mask 转换为 ip1-ip2
- iOS自定义tabBar手势侧滑返回(仿系统)
- Hibernate的批量处理
- JSONModel解析数据成Model
- HDOJ 1232 畅通工程 (并查集)
- python中生成二维码图片
- Additive Number
- 在VM上安装CentOS minimal版
- HTML DOM (一):DOM理解