python處理IP和IP段的模塊基本有兩個:IPy與ipaddr
IPy基本處理8位、16位、24位掩碼的網段,其他的網段處理起來就會出現問題。
ipaddr是google出的一個模塊,很好的可以處理模塊IPy不能解決這個問題,所以建議使用模塊ipaddr!
模塊地址:http://pythonhosted.org/ipaddr/
使用介紹:
ipaddr.IPv4Network() ipv4網段對象建立
ipaddr.IPv6Network() ipv6網段對象建立
ipaddr.IPAddress(address, version) 單個ipv4地址對象建立
部分對象方法描述:
Contains() 網段中是否包含某個IP
is_private 是否是私網地址
is_multicast 是否是廣播地址
is_loopback 是否是loop地址
IsLoopback 是否是迴環地址
IsMulticast 是否是多播地址
broadcast 查看廣播地址
hostmask 查看子網掩碼
iterhost 創建一個網段中一個IP地址列表的迭代器對象
is_reserved 是否是保留地址
實例講解:
#!/usr/bin/python
### 引入模塊
import ipaddr
MIP = "192.168.1.0/29"
### 創建一個網段的對象,ipv4的網段地址
ips = ipaddr.IPNetwork(MIP)
### 查看對象ips的類型
print type(ips)
### 查看網段的廣播地址
print ipaddr.IPv4Network(MIP).broadcast
### 查看網段地址的掩碼
print ipaddr.IPv4Network(MIP).hostmask
### 創建一個網段中一個IP地址列表的迭代器對象
hosts = ipaddr.IPv4Network(MIP).iterhosts()
### 使用循環讀取對象中的每個IP
print type(hosts)
for IP in hosts:
print IP