• python IPy库


    Website: https://github.com/haypo/python-ipy/
    安装:
    easy_install IPy
     
    >>> from IPy import IP
    >>> dir(IP)                     
    ['__add__', '__cmp__', '__contains__', '__doc__', '__eq__', '__getitem__', '__hash__', '__init__', '__len__', '__lt__', '__module__', '__nonzero__', '__repr__', '__str__', '_getIPv4Map', '_printPrefix', 'broadcast', 'int', 'iptype', 'len', 'make_net', 'net', 'netmask', 'overlaps', 'prefixlen', 'reverseName', 'reverseNames', 'strBin', 'strCompressed', 'strDec', 'strFullsize', 'strHex', 'strNetmask', 'strNormal', 'version']
    >>> IP('172.29.20.80/28').len()  —— IP数量
    16
    >>> IP('172.29.20.80/28').net()  —— 网段   
    IP('172.29.20.80')
    >>> IP('172.29.20.80/28').netmask() —— 掩码
    IP('255.255.255.240')
    >>> IP('172.29.20.0/24').prefixlen() —— 掩码,INT型
    24
    >>> IP('172.29.20.0/24').strNormal(0) —— 网段
    '172.29.20.0'
    >>> IP('172.29.20.0/24').strNormal(1) —— 网段 + 掩码
    '172.29.20.0/24'
    >>> IP('172.29.20.0/24').strNormal(2) —— 网段 + 掩码
    '172.29.20.0/255.255.255.0'
    >>> IP('172.29.20.0/24').strNormal(3) —— 网段 + 掩码
    '172.29.20.0-172.29.20.255'
    >>> IP('172.29.20.0/24').strNetmask() —— 掩码
    '255.255.255.0'
    >>> IP('172.29.20.80/28').strNetmask() —— 掩码
    '255.255.255.240'
    >>> IP('172.29.20.0/24').version() —— IP v4 or v6版本号
    4
    >>> '127.0.0.1' in IP('127.0.0.0/24')
    True
    >>> IP('127.0.0.0/24') in IP('127.0.0.0/25')
    False
    >>> print(IP('192.168.1.1').iptype())
    PRIVATE
    >>> print(IP('152.168.1.1').iptype()) 
    PUBLIC
    >>> help(IP) —— 可以看到最详细的文档,更多的方法
     
    >>> ip=IP('127.0.0.0/30')
    >>> for i in ip:
    ...     print(i)
    ... 
    127.0.0.0
    127.0.0.1
    127.0.0.2
    127.0.0.3
    >>> for i in ip:
    ...     print(type(i))
    ... 
    <type 'instance'>
    <type 'instance'>
    <type 'instance'>
    <type 'instance'>
    >>> print(ip)
    127.0.0.0/30
    >>> for i in ip:            
    ...     print(str(i))
    ... 
    127.0.0.0
    127.0.0.1
    127.0.0.2
    127.0.0.3
    >>> print(ip[2])
    127.0.0.2
    >>> print(str(ip[2]))
    127.0.0.2
     
    其他常用方法介绍:
     |  __cmp__(self, other) —— 比较大小
     |      Called by comparison operations.
     |      
     |      Should return a negative integer if self < other, zero if self
     |      == other, a positive integer if self > other.
     |      
     |      Networks with different prefixlen are considered non-equal.
     |      Networks with the same prefixlen and differing addresses are
     |      considered non equal but are compared by their base address
     |      integer value to aid sorting of IP objects.
     |      
     |      The version of Objects is not put into consideration.
     |      
     |      >>> IP('10.0.0.0/24') > IP('10.0.0.0')
     |      1
     |      >>> IP('10.0.0.0/24') < IP('10.0.0.0')
     |      0
     |      >>> IP('10.0.0.0/24') < IP('12.0.0.0/24')
     |      1
     |      >>> IP('10.0.0.0/24') > IP('12.0.0.0/24')
     |      0
     |  __contains__(self, item) —— 检查包含关系
     |      Called to implement membership test operators.
     |      
     |      Should return true if item is in self, false otherwise. Item
     |      can be other IP-objects, strings or ints.
     |      
     |      >>> IP('195.185.1.1').strHex()
     |      '0xc3b90101'
     |      >>> 0xC3B90101 in IP('195.185.1.0/24')
     |      True
     |      >>> '127.0.0.1' in IP('127.0.0.0/24')
     |      True
     |      >>> IP('127.0.0.0/24') in IP('127.0.0.0/25')
     |      False
     |  overlaps(self, item) —— 检查是否重叠
     |      Check if two IP address ranges overlap.
     |      
     |      Returns 0 if the two ranges don't overlap, 1 if the given
     |      range overlaps at the end and -1 if it does at the beginning.
     |      
     |      >>> IP('192.168.0.0/23').overlaps('192.168.1.0/24')
     |      1
     |      >>> IP('192.168.0.0/23').overlaps('192.168.1.255')
     |      1
     |      >>> IP('192.168.0.0/23').overlaps('192.168.2.0')
     |      0
     |      >>> IP('192.168.1.0/24').overlaps('192.168.0.0/23')
     |      -1
     
     
     

    根据ip地址和子网掩码计算网段地址和广播地址(原创) Python里有一个专门处理该类问题的IP类库,来看看:


    view sourceprint?01 #! /usr/bin/env python 

    02   

    03 import sys 

    04 from IPy import IP 

    05   

    06 address = sys.argv[1] 

    07 netmask = sys.argv[2] 

    08   

    09 #print address,netmask 

    10   

    11 #help(IP) 

    12 networkAddress = IP(address).make_net(netmask) # init a IP instance, can with netmask directly, or use make_net(netmask) 

    13 bcastAddress = IP(networkAddress).broadcast() # return the broadcast ip address 

    14   

    15 print networkAddress 

    16 print bcastAddress

     
  • 相关阅读:
    挂载nfs网络共享目录到本地目录报错
    ubuntu18.04,centos7.7下安装nfs详细步骤
    linux的fstab配置文件
    nginx整合php后,浏览器访问.php文件报错
    centos中安装php7.3.13(目前最新版)
    skills_nginx
    problems_ubuntu
    problems_nginx
    docker中部署halo
    数论学习
  • 原文地址:https://www.cnblogs.com/monsteryang/p/6700147.html
Copyright © 2020-2023  润新知