在ip位址規劃中,涉及到計算大量的ip位址,包括網段、網路掩碼、廣播位址、子網數、ip型別等
別擔心,ipy模組拯救你。ipy模組可以很好的輔助我們高效的完成ip的規劃工作。
$ wget --no-check-certificate
$ tar zxvf ipy-0.81.tar.gz
$ cd ipy-0.81/
$ sudo python setup.py install
ipy模組包含ip類,使用它可以方便處理絕大部分格式為ipv6的網路和位址
比如通過version方法來區分出ipv4和ipv6
>>> import ipy
>>> ipy.ip('10.0.0.0/8').version()
4>>> ipy.ip('::1').version()
6
通過指定的網段輸出該網段的ip個數和所有的ip位址清單
如下:
$ more ip.py
#!/usr/bin/env python
import ipy
ip = ipy.ip('192.168.0.0/16')
print ip.len()
for x in ip:
print x
反向解析名稱、ip型別、ip轉換等
>>> ip = ip('192.168.1.20')
>>> ip.reversenames() #反向解析位址格式
['20.1.168.192.in-addr.arpa.']
>>> ip.iptype() #私網型別
'private'
>>> ip('8.8.8.8').iptype() #公網型別
'public'
>>> ip('8.8.8.8').int() #轉換為整型格式
134744072
>>> ip('8.8.8.8').strhex() #轉換為十六進製制格式
'0x8080808'
>>> ip('8.8.8.8').strbin() #轉換成二進位制格式
'00001000000010000000100000001000'
>>> print ip('0x8080808') #十六進製制轉換為ip格式
8.8.8.8
>>> print ip(134744072) #整型格式轉換為ip格式
8.8.8.8
ip方法也支援網路位址的轉換,例如根據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
通過strnormal方法指定不同wantprefixlen引數值以定製不同輸出型別的網段,輸出型別為字串
>>> ip('192.168.1.0/24').strnormal(0) #無返回
'192.168.1.0'
>>> ip('192.168.1.0/24').strnormal(1) #prefix格式
'192.168.1.0/24'
>>> ip('192.168.1.0/24').strnormal(2) #decimalnetmask格式
'192.168.1.0/255.255.255.0'
>>> ip('192.168.1.0/24').strnormal(3) #lastip格式
'192.168.1.0-192.168.1.255'
比較兩個網段是否存在包含、重疊等關係,比如同網路但不同prefixlen會認為是不相等的網段,如10.0.0.0/16不等於10.0.0.0/24,另外即使具有相同的prefixlen但處於不同的網路位址,同樣也視為不相等,如10.0.0.0/16不等於192.0.0.0/16。ipy支援類似於數值型資料的比較,以幫助ip物件進行比較。
比較ip大小
>>> ip('10.0.0.0/24') < ip('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/24').overlaps('192.168.2.0/24')
0
匹配IP位址
正規表示式 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 0 25 0 5 2 0 4 0 9 0 1 0 9 1 9 0 9 1 9 0 25 0 5 2 0 4 0 9 0 1 0 9 1 9 ...
IP位址匹配
問題描述 在路由器中,一般來說 模組採用最大字首匹配原則進行目的埠查詢,具體如下 ip位址和子網位址所帶掩碼做and運算後,得到的值與子網位址相同,則該ip位址與該子網匹配。比如 192.168.1.100 255.255.255.0 192.168.1.0,則該ip和子網192.168.1.0匹配...
python匹配ip位址
ip位址是用3個 號作為分隔符,分割4個數字,每個數字的取值在 0,255 一般日誌檔案中的ip位址都是有效的ip位址,不需要我們再去驗證,因此,若從日誌檔案中提取ip,那麼可以簡單寫成這樣 import re s kkk 192.168.1.136 kkk 192.168.1.137 kk 192...