नीचे कोड आईपी और सबनेट प्रदान करने पर आईपी की रेंज उत्पन्न करेगा। (255.255.255.0) की तरह CIDR संकेतन
from netaddr import *
def getFirstIp(ipAddress,subnet):
ipBin = IPNetwork(ipAddress).ip.bits().split('.')
subBin = IPNetwork(subnet).ip.bits().split('.')
zipped = zip(ipBin,subBin)
netIdList = []
for octets in zipped:
netIdList.append(''.join(str(b) for b in (map((lambda x: int(x[0])*int(x[1])),zip(list(octets[0]),list(octets[1]))))))
firstIp = ''
firstIp = '.'.join(str(int(oct,2)) for oct in netIdList)
return firstIp
def getLastIp(ipAddress,subnet):
ipBin = IPNetwork(ipAddress).ip.bits().split('.')
subBin = IPNetwork(subnet).ip.bits().split('.')
#print ipBin
#print subBin
revsubBin = []
for octets in subBin:
revB = ''.join('1' if(b == '0') else '0' for b in octets)
revsubBin.append(revB)
zipped = zip(ipBin,revsubBin)
netIdList = []
for octets in zipped:
netIdList.append(''.join(str(b) for b in (map((lambda x: 0 if(int(x[0]) == 0 and int(x[1]) == 0) else 1),zip(list(octets[0]),list(octets[1]))))))
#print netIdList
lastIp = ''
lastIp = '.'.join(str(int(oct,2)) for oct in netIdList)
return lastIp
def getRangeOfIps(firstIp,lastIp):
start= int(IPAddress(firstIp))
end = int(IPAddress(lastIp))
ipList = []
for ip in range(start,end+1):
ipList.append(str(IPAddress(ip)))
return ipList
def manipulateIP():
firstIp = getFirstIp(ipAddress,subnet)
lastIp = getLastIp(ipAddress,subnet)
ipList = getRangeOfIps(firstIp,lastIp)
print ipList
वापस जाएँ और अपनी प्रश्नों के कुछ उत्तर को स्वीकार करता है, तो वे मददगार थे करना चाहते हैं सकता है ... –
मैं अजगर 2 पर इस्तेमाल किया है IPY (http://c0re.23.nu/c0de/IPy/)। एक्स, और अब इसे पायथन 3 पर पोर्ट करने की प्रक्रिया में हूं। एक बार जब मैं कर चुका हूं तो मैं एक लिंक के रूप में एक लिंक पोस्ट करूंगा। –
@AJ: आईपी भी एक अच्छी पसंद है, लेकिन मैंने netaddr की सिफारिश की क्योंकि मुझे यह बेहतर पसंद है। :) – jathanism