shell脚本:ip/mask 转换为 ip1-ip2

原创 2015年11月19日 18:05:57
#!/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"

}

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}"

shell进行子网掩码(mask)和子网前缀(prefix)之间的转换

由于最近在利用shell编写一套自动化安装OpenStack的脚本,需要进行利用网络前缀计算子网掩码,因此在此记录一下它们之间的转换代码。 1. prefix---->mask prefix_to_m...
  • gj19890923
  • gj19890923
  • 2016年04月03日 11:03
  • 2209

汇总下几个IP计算/转换的shell小脚本

1. IP转换为整数 > vi ip2num.sh #!/bin/bash # 所有用到的命令全是bash内建命令 IP_ADDR=$1 [[ "$IP_ADDR" =~ "^[0-9]...
  • chengxuyuanyonghu
  • chengxuyuanyonghu
  • 2014年11月27日 15:26
  • 326

linux shell脚本中如何自由操作字符串(转)

Bash所支持的字符串操作的数量多的令人惊讶. 但是不幸的是, 这些工具缺乏统一的标准. 一些是参数替换的子集, 而另外一些则受到UNIX expr命令的影响. 这就导致了命令语法的不一致, 还会引...
  • u010781856
  • u010781856
  • 2015年09月01日 21:38
  • 1418

shell脚本转换成二进制的可执行文件方法--加密

http://www.360doc.com/content/14/0507/14/10058718_375504586.shtml http://www.linuxidc.com/Linux/2...
  • zdf511391565
  • zdf511391565
  • 2016年03月13日 14:22
  • 3471

将DOS批处理文件转换为Shell脚本(ZHUAN)

Appendix L. 将DOS批处理文件转换为Shell脚本 相当多的在PC上学习脚本的程序员都在运行DOS. 事实上, 残废的DOS批处理文件语言还是可以编写出一些比较强大的脚本来的, 虽然...
  • haishuitian1
  • haishuitian1
  • 2014年04月25日 20:03
  • 2309

如何获取网卡相关信息(包括mac, ip, mask, gateway等)?---利用GetAdaptersInfo

本文中, 我们来看看如何利用GetAdaptersInfo获取与网卡相关的一些信息。 如果你在运行的时候缺头文件或者库, 请到网上下载, 也可以直接在我的博客资源中下载, 免积分。其实, 这个函数中的...
  • stpeace
  • stpeace
  • 2015年02月03日 22:40
  • 1522

Shell脚本实现自动修改IP地址

#!/bin/sh #auto Change ip netmask gateway scripts #wugk 2012-12-17 cat ++++++++自动修改ip和主...
  • chenyulancn
  • chenyulancn
  • 2016年01月26日 10:21
  • 1523

Shell脚本: Windows下可用源码 转换为 Linux下可用源码

Windows下编写的代码(如C\C++\Java等)放到Linux下不能直接编译, 因为主要存在两个问题: 1. Windows和Linux的行尾符不同, Windows下行尾符是"\n\r", 而...
  • mxdlove00
  • mxdlove00
  • 2014年09月01日 15:01
  • 1242

shell 实现txt转换成html

shell源码 [python] view plaincopyprint?    [python] view plaincopyprint? # !/bin/sh      ...
  • chengxuyuanyonghu
  • chengxuyuanyonghu
  • 2015年02月09日 14:56
  • 575

linux shell下利用bc,实现任意进制的转换

大小写转换 任意进制的相互转换内置多行文本的转换命令大小写转换cat 1.txt | tr "[a-z]" "[A-Z]"任意进制的相互转换(内置多行文本的转换命令)echo "ibase=16;ob...
  • u011729865
  • u011729865
  • 2017年01月11日 09:47
  • 1376
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shell脚本:ip/mask 转换为 ip1-ip2
举报原因:
原因补充:

(最多只允许输入30个字)