python IPy 匹配ip位址段

2021-10-05 00:10:44 字數 2685 閱讀 3712

在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...