ipremove
#!/bin/env python
import netaddr
import copy
def iprem(sumnet,subnet):
result=copy.copy(sumnet)
#print(sumnet)
for net in sumnet:
if net in subnet:
result.remove(net)
#print(net,subnet)
if subnet in net and subnet!=net:
result=result+netaddr.cidr_exclude(net,subnet)
result.remove(net)
return result
ip=netaddr.IPNetwork('0.0.0.0/0')
ip1=netaddr.IPNetwork('1.1.1.0/24')
ip2=netaddr.IPNetwork('3.3.3.0/24')
ip3=netaddr.IPNetwork('128.0.0.0/16')
ip4=netaddr.IPNetwork('118.194.164.0/22')
ip=netaddr.cidr_merge([ip])
result1=ip
for ip in [ip1,ip2,ip3]:
result1=iprem(result1,ip)
for ip in result1:
print(ip)
ipaggerate
#!/bin/env python
import netaddr
ip1=netaddr.IPNetwork('1.0.0.0/8')
ip2=netaddr.IPNetwork('1.2.0.0/16')
ip3=netaddr.IPNetwork=('32.0.0.0/16')
ipnetworks=[ip1,ip2,ip3]
netaddr.cidr_merge(ipnetworks)
地址段分析
#!/bin/env python
#coding: utf-8
import netaddr,sys
ip=netaddr.IPNetwork(sys.argv[1])
start=ip.network
stop=ip.broadcast
wangguan=start+1
print "地址段:%s 地址范围:%s————%s 网关:%s" %(ip,start,stop,wangguan)
地址段分析2
#!/bin/env python
#coding: utf-8
import netaddr,sys
ip=netaddr.IPNetwork(sys.argv[1])
start=ip.network
wangguan=start+1
stop=ip.broadcast
startformat=str(start).replace('::','')
def startipv6format(ipv6):
startformat=str(ipv6).replace('::','')
count=startformat.count(':')
replace1=''
for num in range(7-count):
replace1=replace1+':0000'
if not ipv6.endswith('::'):
replace1=replace1+':'
startformat=ipv6.replace('::',replace1)
return startformat
if start.version==6:
start=str(start)
start=startipv6format(start)
if stop.version==6:
stop=str(stop)
stop=startipv6format(stop)
start=str(start).upper()
stop=str(stop).upper()
wangguan=str(wangguan).upper()
#print "地址段:%s 地址范围:%s————%s 网关:%s" %(ip,start,stop,wangguan)
print "地址段:%s" %ip
print "开始地址%s" %(start)
print "结束地址%s" %(stop)
print "网关:%s" %wangguan
print ""
ip生成脚本
#!/usr/bin/env python
#coding: utf-8
from netaddr import IPNetwork
import sys
ip=sys.argv[1]
ip=IPNetwork(ip)
count=ip.size
for i in range(4):
print "%s/%s" %((ip.ip+count*i),ip.prefixlen)
ipset 比对
#!/bin/env python
import netaddr
import copy
def huizong(filename):
ipprefixs=[]
for line in open(filename):
line=line.strip()
if not line or '/' not in line:continue
ipprefix=netaddr.IPNetwork(line)
ipprefixs.append(ipprefix)
return netaddr.cidr_merge(ipprefixs)
def iprem(sumnet,subnet):
result=copy.copy(sumnet)
for net in sumnet:
if net in subnet:
result.remove(net)
if subnet in net and subnet!=net:
result=result+netaddr.cidr_exclude(net,subnet)
result.remove(net)
return result
def ip_compare(left_side,right_side):
left=huizong(left_side)
right=huizong(right_side)
for line in right:
left=iprem(left,line)
for ip in netaddr.cidr_merge(left):
print(ip)
if __name__=='__main__':
#ip_compare('chnroutes.txt', 'chnroutes_original.txt') #实际新增
ip_compare('chnroutes_original.txt','chnroutes.txt') #实际删除