zoukankan      html  css  js  c++  java
  • 02 IPy模块的应用

    IPy模块的简介

    是一个强大的第三方模块,用过对ipy模块的使用,可以很好的帮助我们高效的完成ip规划工作。

    安装方式

    pip install IPy
    

    检测方法

    >>> import IPy
    >>> dir(IPy)
    ['INT_TYPES', 'IP', 'IPSet', 'IPV6_MAP_MASK', 'IPV6_TEST_MAP', 'IPint', 'IPv4ranges', 'IPv6ranges', 'MAX_IPV4_ADDRESS', 'MAX_IPV6_ADDRESS', 'STR_TYPES', '_BitTable', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '__version__', '_checkNetaddrWorksWithPrefixlen', '_checkNetmask', '_checkPrefix', '_count0Bits', '_count1Bits', '_countFollowingZeros', '_intToBin', '_ipVersionToLen', '_netmaskToPrefixlen', '_parseAddressIPv6', '_prefixlenToNetmask', '_remove_subprefix', 'bisect', 'collections_abc', 'intToIp', 'parseAddress', 'types', 'xrange']
    

    网络基本信息

    IPy模块包含ip类,可以处理大部分格式的IPV6和IPV4的网络和地址

    ip基本信息

    # 识别ip分类
    version()
    
    # 获取ip数量
    len()
    

    ipv4的演示

    from IPy import IP
    ip_content="192.168.15.0/24"
    ip_result=IP(ip_content).version()
    print("{} 的IP类型是:{}".format(ip_content,ip_result))
    
    192.168.15.0/24 的IP类型是:4
    

    给一个网段获取ip数量

    from IPy import IP
    ip_range = IP('192.168.15.0/27')
    print("{}网段有{}个ip".format(ip_range, ip_range.len()))
    
    for i in ip_range:
        print(i)
    
    192.168.15.0/27网段有32个ip
    >>> 
    >>> for i in ip_range:
    ...     print(i)
    ... 
    192.168.15.0
    192.168.15.1
    192.168.15.2
    192.168.15.3
    ...
    

    IPy基本操作

    反向解析、ip类型、ip转换

    反向解析名称

    定制ip地址

    from IPy import IP
    
    test_ip = IP("115.231.142.3")# 公网
    name=test_ip.reverseNames()
    print("{}的域名名称是{}".format(test_ip,name))
    

    获取ip类型

    >>> from IPy import IP
    >>> test_ip.iptype()
    'PUBLIC'
    

    ip地址的转换

    >>> from IPy import IP
    >>> IP('8.8.8.8').int()
    134744072
    >>> IP('8.8.8.8').strHex()
    '0x8080808'
    >>> IP('8.8.8.8').strBin()
    '00001000000010000000100000001000'
    
    >>> print(IP('192.168.1.0').make_net('255.255.255.0'))
    192.168.1.0/24
    

    多网络实践

    网段比较

    # ip < ip
    >>> IP('10.0.0.0/24') < IP('12.0.0.0/24')
    True
    

    地址包含

    ip in ip
    T or F
    
    >>> from IPy import IP
    >>> '192.168.1.100' in IP('192.168.1.0/24')
    True
    >>> IP('192.168.1.0/24') in IP('192.168.0.0/16')
    True
    

    网段重叠

    ip.overlaps(ip网段)
    >>> IP('192.168.0.0/23').overlaps('192.168.1.0/24')
    1	#1代表重叠,0代表不重叠
    

    综合应用

    #!/usr/bin/python3.6.7
    from IPy import IP
    
    while True:
        ip_s = input('请输入一个ip地址或者网段>>>:')  # 接收用户输入的ip或者网段
        try:
            ips = IP(ip_s)
        except Exception as e:
            print("您输入的ip格式不正确!请重新输入")
            continue
        else:
            if len(ips) > 1:
                print('网络地址>>>: %s' % ips.net())
                print('网络子网掩码>>>: %s' % ips.netmask())
                print('网络广播地址>>>: %s' % ips.broadcast())
                print('地址反向解析>>>: %s' % ips.reverseNames()[0])
                print('子网个数>>>: %s' % len(ips))
                for i in ips:
                    print("网段内的ip为>>>: %s" % i)
            else:
                print("输出的16进制为>>:%s" % ips.strHex())
                print("输出的2进制为>>:%s" % ips.strBin())
                print("网络类型为>>:%s" % ips.iptype())
    
  • 相关阅读:

    远见卓识,领导力在于把握企业潮流
    创业者白手起家需要的6个基本因素
    企业领袖的最高境界
    人才招聘中的“笔迹分析技术”
    个人品牌,无法复制的职场优势
    美丽的姑娘,请允许我为你写诗
    重做日志浪费(redo wastage)
    利用Toad for Data Analysts软件生成查询语句
    JailbreakMe.com最新浏览器模式破解iPhones,iPads和iPod Touches方法
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14983347.html
Copyright © 2011-2022 走看看