• py处理网段转化模块


    def countBit(countNum,bit):
        giveNum="0"*(bit-len(bin(countNum)[2:]))+bin(countNum)[2:]
        return  giveNum
    
    #将ip转十进制
    def minIp(ip):
        value = countBit(int(ip.split('.')[0]),8) + countBit(int(ip.split('.')[1]),8)+ countBit(int(ip.split('.')[2]),8)+ countBit(int(ip.split('.')[3]),8)
        return int(value,2)
    
    def net(n):
        ip1 =  n.split('/')[0]
        mask1 = int(n.split('/')[1])
        if mask1 == 32:
            minip = ip1
            maxip = ip1
    
        elif mask1 > 24:
            k = int(ip1.split('.')[-1])
            dels = 8-(mask1 - 24)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+str1
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+str2
    
    
        elif mask1 == 24:
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+ip1.split('.')[2]+'.'+'255'
        elif mask1 > 16 and mask1 < 24:
            k = int(ip1.split('.')[2])
            dels = 8-(mask1 - 16)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+str1+'.'+'0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+str2+'.'+'255'
        elif mask1 == 16:
            minip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+'0'+'.0'
            maxip = ip1.split('.')[0]+'.'+ip1.split('.')[1]+'.'+'255'+'.'+'255'
    
        elif mask1 > 8 and mask1 < 16:
            k = int(ip1.split('.')[1])
            dels = 8-(mask1 - 8)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = ip1.split('.')[0]+'.'+str1+'.'+'0'+'.'+'0'
            maxip = ip1.split('.')[0]+'.'+str2+'.'+'255'+'.'+'255'
        elif mask1 == 8:
            minip = ip1.split('.')[0]+'.'+'0'+'.'+'0'+'.0'
            maxip = ip1.split('.')[0]+'.'+'255'+'.'+'255'+'.'+'255'
        elif mask1 > 0 and mask1 < 8:
            k = int(ip1.split('.')[0])
            dels = 8-(mask1 - 0)
            netNumb = 2**dels-1   #可用地址范围
            eq = k/(netNumb+1)
            str1 = str((netNumb+1)*eq)
            str2 = str((netNumb+1)*eq+netNumb)
            minip = str1+'.'+'0'+'.'+'0'+'.'+'0'
            maxip = str2+'.'+'255'+'.'+'255'+'.'+'255'
    
        elif mask1 == 0:
            minip = '0.0.0.0'
            maxip = '255.255.255.255'
        else:
            print 'bad mask!'
    
        return [minIp(minip),minIp(maxip)]  #转化整型

     调用方式 net(10.2.2.0/24)

    可以封装成一个类,没时间,so~~

  • 相关阅读:
    Tasklet机制
    linux 内核与用户空间通信之netlink使用方法
    inline总结与思考
    PF_NETLINK应用实例NETLINK_KOBJECT_UEVENT具体实现--udev实现原理
    2410下DMA驱动源码分析
    [转]数据库建立索引的一般依据
    [转]性能调优的步骤
    [原] JT SQL Server 性能调优札记之二
    [转]SQL Server 2000执行计划成本(5/5)
    [转]SQL Server 2000执行计划成本(3/5)
  • 原文地址:https://www.cnblogs.com/fengzaoye/p/6826061.html
Copyright © 2020-2023  润新知