IP 范围表示法转换

Usage:

python code.py 192.168.0.1 192.168.0.255

 1 #!/bin/python
 2 # coding: utf-8
 3 
 4 '''
 5 将开始地址和结束地址表示的IP范围转换为
 6 192.168.0.0/24
 7 格式的地址
 8 '''
 9 
10 '''
11 @ips 起始IP
12 @ipe 结束IP
13 @return 192.168.0.0/24 格式的IP范围表示法
14 '''
15 def do(ips, ipe):
16     #TODO: 对输入数据是否为IP地址做校验
17     ipsnum = 0
18     for i in ips.split('.'):
19         ipsnum = (ipsnum << 8) + int(i)
20     ipenum = 0
21     for i in ipe.split('.'):
22         ipenum = (ipenum << 8) + int(i)
23     ipend = ipsnum ^ ipenum
24     zero_num = 0
25     while ipend != 0:
26         ipend = (ipend>>1)
27         zero_num = zero_num + 1
28     zero_num = 32 - zero_num
29     return '%s/%d' % (ips, zero_num)
30 
31 if __name__ == '__main__':
32     import sys
33     if len(sys.argv) < 3:
34         print 'bad'
35     else:
36         print do(sys.argv[1], sys.argv[2])

联系我:

Email: xudongsecret@qq.com

===完===