システム基礎情報モジュール詳細解の実用的なIPyノート(二)ノート

6087 ワード

1.IPv 4とIPv 6の区別
IP('10.0.0.0/8').version      //4
IP('::1').version      //6

2.ipクラスでよく見られる方法
>>>from IPy import IP
>>>ip=IP('192.168.1.20')
>>>ip.reverseName() #        
>>>ip.iptype()   #ip  
>>>IP('8.8.8.8').int() #       
>>>IP('8.8.8.8').strHex() #       
>>>IP('8.8.8.8').strBin() #      
>>>print(IP(0x8080808))  #   IP  

3.ipメソッドはネットワークアドレスの変換をサポートする
>>>from IPy import IP
>>>print(IP('192.168.1.0').make_net('255.255.255.0'))
>###192.168.1.0/24
>>>print(IP('192.168.1.0/255.255.255.0',make_net=True))
>###192.168.1.0/24
>>>print(IP('192.168.1.0-192.168.1.255',make_net=True))
>###192.168.1.0/24

4.strNormal()で異なるwantprefixlenパラメータ値を指定して異なる出力タイプのセグメントをカスタマイズし、出力タイプはString
>>>IP('192.168.1.0/24').strNormal(0)   #wantprefixlen=0,   。
>#'192.168.1.0'
>>>IP('192.168.1.0/24').strNormal(1)   #wantprifixlen=1,prefix  。
>#'192.168.1.0/24'
>>>IP('192.168.1.0/24').strNormal(2)   #wantprifixlen=2,decimalnetmask  。
>#'192.168.1.0/255.255.255.0'
>>>IP('192.168.1.0/24').strNormal(3)   #wantprifixlen=3,lastIP  。
>#'192.168.1.0-192.168.1.255'

5.IPオブジェクトの比較を支援するために、類似数値型データの比較をサポートする.
>>>IP('10.0.0.0/24')'12.0.0.0/24')
>#True
  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
            ,overlaps()
>>>IP('192.168.0.0/23').overlaps('192.168.1.0/24')
#1         
>>>IP('192.168.1.0/23').overlaps('192.168.2.0')
#0         

demoは入力したipまたはサブネットに基づいてネットワーク,マスク,ブロードキャスト,逆解析,サブネット数,ipタイプなどの情報を返す.
#!/usr/bin/python
from IPy import IP

#      ,   ip       
ip_s=input('Please input an IP or net-range: ')
ips=IP(ip_s)
if len(ips) > 1:    #       
    #      
    print('net: %s' % ips.net())
    #        
    print('netmask: %s' % ips.netmask())
    #        
    print('broadcast: %s' % ips.broadcast())
    #        
    print('reverse address: %s' % ips.reverseNames()[0])
    #       
    print('subnet: %s' % len(ips))
    #      
    print('iptype: %s' % ips.iptype())
else:   #   IP  
    #  IP    
    print('reverse address: %s' % ips.reverseNames()[0])
    #  16    
    print('hexadecimal: %s' % ips.strHex())
    #       
    print('binary ip: %s' % ips.strBin())
    #      
    print('iptype: %s' % ips.iptype())