Linux下强大IP地址格式转换工具--netmask命令 http://blog.sina.com.cn/s/blog_73822b8b0100p67s.html

 由于一般的路由器、防火墙等并不支持IP地址范围的方式,所以工作中经常要把IP地址范围转换成子网掩码的格式、CIDR格式、思科反向子网掩码格式等!

    虽然windows下有些工具可以做到,可是使用起来不方便,功能也不够强大,而且进行批量转换的时候,无法写脚本实现!

    无意中在linux下发现了netmask这个工具,功能强大,速度超快,结合脚本很容易实现批量转换!

    先介绍一下这个工具:

    netmaks可以在 IP范围、子网掩码、cidr、cisco等格式中互相转换,并且提供了IP地址的点分十进制、16进制、8进制、2进制之间的互相转换!


    1、netmask的安装:

    Centos下安装很简单:

# yum install netmask
   centos、fedora、opensuse下面使用yum没有安装上,所以采用了源码的方式进行安装:
# wget http://mirrors.sohu.com/ubuntu/pool/universe/n/netmask/netmask_2.3.12.tar.gz
# tar xf netmask_2.3.12.tar.gz
# cd netmask-2.3.12
# ./configure
# make
# make install

    2、安装完成以后,先来看一下帮助文档:

 # netmaks -h
 This is netmask, an address netmask generation utility
  Usage: netmask spec [spec ...]
-h, --help                    Print a summary of the options
        -v, --version                 Print the version number
        -d, --debug                   Print status/progress information
        -s, --standard                Output address/netmask pairs
           转换到标准的 ip地址/子网掩码
         -c, --cidr                    Output CIDR format address lists
           转换到CIDR格式
         -i, --cisco                   Output Cisco style address lists
           转换到Cisco反向子网掩码
         -r, --range                   Output ip address ranges
           转换到IP地址范围
         -x, --hex                     Output address/netmask pairs in hex
           转换到16进制
         -o, --octal                   Output address/netmask pairs in octal
           转换到8进制
         -b, --binary                  Output address/netmask pairs in binary
           转换到2进制
         -n, --nodns                   Disable DNS lookups for addresses
      Definitions:
        a spec can be any of:
        netmask命令接受的ip地址格式 :
          address              单独IP
          address:address      开始IP:结束IP
          address:+address     开始IP:+IP个数
          address/mask         IP/掩码

    3、使用情况如下:

    ip范围转换到cidr格式

    # netmask -c 192.168.0.0:192.168.2.255
        192.168.0.0/23
        192.168.2.0/24

    ip范围转换到标准的子网掩码格式

    # netmask -s 192.168.0.0:192.168.2.255
        192.168.0.0/255.255.254.0
        192.168.2.0/255.255.255.0

    ip范围转换到cisco格式

    # netmask -i 192.168.0.0:192.168.2.255
        192.168.0.0 0.0.1.255
        192.168.2.0 0.0.0.255

    cidr个数转换到ip范围格式

    # netmask -r 192.168.0.0/23
        192.168.0.0-192.168.1.255   (512)

    把点分10进制的ip转换到二进制

    # netmask -b 192.168.0.0
     11000000 10101000 00000000 00000000 / 11111111 11111111 11111111 11111111