2012-05-30 18 views
5

मैं आईपी पते और सबनेट पर काम करने के लिए पायथन-नेटड्रर लाइब्रेरी का उपयोग कर रहा हूं। मैंने netaddrd का पूरा दस्तावेज पढ़ा है: Netaddr documentation। लेकिन मेरी समस्या का कोई समाधान नहीं मिला। मेरे पास एक आईपी पता और सबनेट है, मैं उन दोनों का उपयोग करके उस आईपी के लिए उपसर्ग प्राप्त करना चाहता हूं। ताकि मैं सब आईपी सबनेट में आने वाले प्रिंट कर सकूं।आईपी उपसर्ग कैसे प्राप्त करें जबकि हमारे पास पाइथन-नेटड्रर का उपयोग करके सबनेट और आईपीवी 4 पता है?

उदाहरण के लिए:

Ip Address: 192.0.2.0 
Subnet Network: 255.255.255.0 

It should return the prefix which is : 24 
+0

24 कहां से आते हैं? – Oliver

+0

क्या आपने कोशिश की है उदा। 'IPAddress ('192.0.2.0/255.255.255.0')'? आप उस सबनेट में सभी पतों की एक सूची प्राप्त कर सकते हैं, जिसमें आपके द्वारा लिंक किए गए दस्तावेज़ों में एक उदाहरण दिया गया है। –

+0

क्या '/ 24' मुखौटा' 255.255.255.0' का प्रतिनिधित्व करने का एक तरीका है जो '11111111.11111111.11111111.00000000' –

उत्तर

6

प्राप्त करने के लिए 24 आप निम्नलिखित स्निपेट का उपयोग कर सकते

ip = IPNetwork('192.0.2.0/255.255.255.0') 
print ip.prefixlen 

लेकिन अगर आप सबनेट में सभी पतों की सूची चाहते हैं कि उसे उपयोग करना आसान हो:

ip = IPNetwork('192.0.2.0/255.255.255.0') 
list(ip) 
0
def getPrefix(binary): 
    prefixCount=0 
    for i in (str(binary)): 
     if(i == '1'): 
      prefixCount+=1 
    return prefixCount 

यदि उपनेट को बाइनरी प्रारूप में परिवर्तित किया जाता है और इनपुट में दिया जाता है तो यह आपके "उपसर्ग" को वापस कर देगा।

2
एक दिया Netmask साथ

हम नीचे समारोह के साथ उपसर्ग प्राप्त कर सकते हैं:

def getPrefix(mask): 
    prefix = sum([bin(int(x)).count('1') for x in mask.split('.')]) 
    return prefix 
0

subnetmask है: 255.255.255.0 इस तरह मैं इसे C: 1। 1। 1. 0

255 सभी 8-बिट चालू हैं। अर्थात। सभी 1 है। और 0 सभी 8-बिट बंद हैं। यदि आप इस सबनेटमास्क [255.255.255.0] को देखते हैं, तो पहले 3 ऑक्टेट सभी चालू 'चालू' होते हैं जबकि अंतिम ऑक्टेट 'बंद' हो जाता है।
इस प्रकार, इस मामले में चालू सभी ऑक्टेट्स की गणना, 3 ऑक्टेट्स हम कह सकते हैं: 255.255.255.0 1। 1। 1 .0 8 + 8 + 8 + 0 = 24

+0

लगता है कि आप इसे विभाजित कर सकते हैं, 'bitwise- और' और इसे वापस शामिल करें। – woot