標籤:類型 test pre 一個 rom pack pytho 0.12 ipy
如果我們想快速得到一個IP位址區段有多少個ip,快速得到IP位址區段的子網路遮罩,或者快速得到一個IP地址的二進位,那麼可以來學習一下。
本文利用python的一個IP分析模組IPy實現,首先安裝IPy模組
wget https://pypi.python.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gztar -xf IPy-0.83.tar.gz cd IPy-0.83python setup.py install
接下來簡單介紹一下功能
>> from IPy import IP
>> ip = IP(‘192.168.0.0/28‘)
>> print ip.len() ##輸出ip網段的所有ip個數
16
>> for x in ip: ##將所有的ip便利出來
... print x
...
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7
192.168.0.8
192.168.0.9
192.168.0.10
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
>> IP(‘192.168.1.1‘).strBin() ##輸出IP地址的二進位
‘11000000101010000000000100000001‘
>> IP(‘192.168.0.0/23‘).netmask() ##輸出ip位址區段的子網路遮罩
IP(‘255.255.254.0‘)
>> IP(‘192.168.1.1‘).iptype() ##輸出IP地址的類型公有或者私人等
‘PRIVATE‘
>> IP(‘8.8.8.8‘).iptype()
‘PUBLIC‘
接下來寫一個指令碼來根據輸入的IP地址返回各種結果:
[[email protected] python]# cat ip_test.py #!/usr/bin/python#-*- coding:utf-8 -*-from IPy import IPip_input = raw_input("請輸入一個ip地址或者位址區段: ")ips = IP(ip_input)if int(len(ips)) > 1 : ##判斷IP地址個數,大於1代表輸入的是位址區段 print "網段: %s" % ips.net() print "ip個數: %s" % len(ips) print "子網路遮罩: %s" % ips.netmask() print "廣播位址: %s" % ips.broadcast()else : ##輸入的是一個IP地址 print "二進位為: %s" % ips.strBin() print "地址的類型: %s" % ips.iptype()
測試一下:
輸入IP地址測試[[email protected] python]# python ip_test.py 請輸入一個ip地址或者位址區段: 192.168.1.1二進位為: 11000000101010000000000100000001地址的類型: PRIVATE輸入IP位址區段測試[[email protected] python]# python ip_test.py 請輸入一個ip地址或者位址區段: 192.168.0.0/23網段: 192.168.0.0ip個數: 512子網路遮罩: 255.255.254.0廣播位址: 192.168.1.255
關於IP地址處理模組IPy的功能還有很多,大家可根據需要去使用。
寫一個簡單的python指令碼來返回ip地址的掩碼,子網個數等