美文网首页Python
Python自动化运维之IPy模块

Python自动化运维之IPy模块

作者: 易霂 | 来源:发表于2020-10-27 17:13 被阅读0次

    IPy

    用于处理IPv4和IPv6地址和网络的类和工具。

    [注]:文章所示代码在python3.8,windows10,centos7.8 下测试通过

    安装

    pip install ipy
    

    基本使用

    输出指定网段的IP个数及ip清单

    # 导入IP模块
    from IPy import IP
    # 指定网段为127.0.0.0/30
    ip = IP('127.0.0.0/30')
    In [8]: for x in ip:
       ...:     print(x) # 列出该网段所有ip
       ...:
    127.0.0.0
    127.0.0.1
    127.0.0.2
    127.0.0.3
    In [10]: ip.len() # 该网段ip个数
    Out[10]: 4
    

    反向解析地址格式

    In [12]: ip.reverseNames()
    Out[12]:
    ['0.0.0.127.in-addr.arpa.',
     '1.0.0.127.in-addr.arpa.',
     '2.0.0.127.in-addr.arpa.',
     '3.0.0.127.in-addr.arpa.']
    
    In [38]: ip.reverseName()
    Out[38]: '0-3.0.0.127.in-addr.arpa.'
    
    In [35]: ip.netmask()
    Out[35]: IP('255.255.255.252')
    
    In [36]: ip.prefixlen()
    Out[36]: 30
    
    In [37]: ip.broadcast()
    Out[37]: IP('127.0.0.3')
    

    ip地址类型

    In [13]: ip.iptype()
    Out[13]: 'LOOPBACK'
    

    ip转换为整型格式

    In [16]: IP('127.0.0.0').int()
    Out[16]: 2130706432
    

    ip转换为16进制

    In [17]: IP('127.0.0.0').strHex()
    Out[17]: '0x7f000000'
    

    ip转换为二进制

    In [18]: IP('127.0.0.0').strBin()
    Out[18]: '01111111000000000000000000000000'
    

    16进制止转换为IP格式

    In [19]: IP('0x7f000000')
    Out[19]: IP('127.0.0.0')
    

    【注】:IP地址格式可以互相转换,有兴趣可以试试

    ip地址分类

    In [21]: IP('127.0.0.0').version() #ipv4
    Out[21]: 4 
    
    In [22]: IP('::1').version() # ipv6
    Out[22]: 6
    

    ip与网络地址转换

    In [23]: IP('127.0.0.1/255.0.0.0', make_net=True)
    Out[23]: IP('127.0.0.0/8')
    
    In [24]: IP('127.0.0.1').make_net('255.0.0.0')
    Out[24]: IP('127.0.0.0/8')
    
    In [25]: IP('127.0.0.0-127.255.255.255')
    Out[25]: IP('127.0.0.0/8')
    

    ip地址转换为字符串

    In [26]:  IP('10.0.0.0/32').strNormal()
    Out[26]: '10.0.0.0'
    
    In [27]: IP('10.0.0.0/24').strNormal()
    Out[27]: '10.0.0.0/24'
    
    In [28]: IP('10.0.0.0/24').strNormal(0)
    Out[28]: '10.0.0.0'
    
    In [29]: IP('10.0.0.0/24').strNormal(1)
    Out[29]: '10.0.0.0/24'
    
    In [30]: IP('10.0.0.0/24').strNormal(2)
    Out[30]: '10.0.0.0/255.255.255.0'
    
    In [31]: IP('10.0.0.0/24').strNormal(3)
    Out[31]: '10.0.0.0-10.0.0.255'
    

    wantprefixlen取值含义

    wantprefixlen == 0 / None     don't return anything         1.2.3.0
    wantprefixlen == 1            返回前缀                        1.2.3.0/24
    wantprefixlen == 2            返回网段/子网掩码                1.2.3.0/255.255.255.0
    wantprefixlen == 3            返回IP地址范围                   1.2.3.0-1.2.3.255
    

    多网络计算

    # 判断IP是否包含在另一个网段中
    In [32]: '192.168.1.1' in IP('192.168.1.0/24') 
    Out[32]: True
    # 判断网段是否重叠,0表示不存在重叠,1表示存在重叠
    In [33]: IP('192.168.1.0/24').overlaps('192.168.2.0')
    Out[33]: 0
    # 子网合并
    In [51]: IPSet([IP('192.168.1.0/24'),IP('192.168.0.0/24')])
    Out[51]: IPSet([IP('192.168.0.0/23')])
    

    【转发请注明原文出处,如果转发到公众号请联私信联系】

    相关文章

      网友评论

        本文标题:Python自动化运维之IPy模块

        本文链接:https://www.haomeiwen.com/subject/zpmxvktx.html