Python之實用的IP位址處理模組IPy

2021-08-14 17:36:07 字數 2818 閱讀 2768

在ip位址規劃中,涉及到計算大量的ip位址,包括網段、網路掩碼、廣播位址、子網數、ip型別等

別擔心,ipy模組拯救你。ipy模組可以很好的輔助我們高效的完成ip的規劃工作。

$ wget 

/source/i/ipy/ipy-0.81.tar.gz --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

Python之實用的IP位址處理模組IPy

在ip位址規劃中,涉及到計算大量的ip位址,包括網段 網路掩碼 廣播位址 子網數 ip型別等 別擔心,ipy模組拯救你。ipy模組可以很好的輔助我們高效的完成ip的規劃工作。pip install ipy1.ipy模組包含ip類,使用它可以方便處理絕大部分格式為ipv6的網路和位址 比如通過vers...

python基礎篇之實用庫

python 的實用離不開其強大的庫或框架的支援,像正規表示式,檔案模組,命令列模組,django 框架,sk learning 工具箱等.這些都讓 python 能夠非常方便的處理不同領域的問題。初學 python,對 python 的文書處理能力有很深的印象,除了 str 物件自帶的一些方法外,...

實用的IP位址處理模組IPy

在ip位址規劃中,涉及到計算大量的ip位址,包括網段 網路掩碼 廣播位址 子網數 ip型別等。所以我們使用ipy處理這些問題。安裝 pip install ipy 或 pip install ipy 0.81判斷通過version方法就可以區分出ipv4與ipv6。import ipy ip 10....