簡體   English   中英

確定兩個IP地址是否是同一網絡python

[英]Determine if two ip addresses are the same network python

好了,因此我需要輸入兩個輸入的IP地址,例如128.233.17.12,然后輸入給定的子網掩碼,並且如果它們在同一網絡上,則能夠輸出。
我設法將它們轉換成二進制格式並正確格式化,但是現在我不知道如何比較它們。 為了確定它們是否在同一網絡上,我需要進行垂直加法。 IE

#128.233.17.12 = 10000000111010010001000|100001100
#128.233.12.17 = 10000000111010010000110|000010001
#255.255.0.0   = 11111111111111110000000000000000

僅當子網(底部)具有1時,前兩個IP才需要相同。因此,它們位於同一網絡上。 到目前為止,這是我的代碼,但是我不確定如何輸入所有變量。

IPAdress1 = input("Please enter a dotted quad notation IP address: ")
IPAdress2 = input("Please enter another: ")
SubnetMask = input("Please enter the subnet mask: ")

binaryIP1 = [bin(int(IPAdress1))[2:].rjust(8,'0') for IPAdress1 in IPAdress1.split('.')]
IP1 = ''.join(binaryIP1)

binaryIP2 = [bin(int(IPAdress2))[2:].rjust(8,'0') for IPAdress2 in IPAdress2.split('.')]
IP2 = ''.join(binaryIP2)

binarysub = [bin(int(SubnetMask))[2:].rjust(8,'0') for SubnetMask in SubnetMask.split('.')]
sub = ''.join(binarysub)
i=0
j=0

for (i,j) in zip(binaryIP1,binaryIP2):
    if i == j:
        print("Same Network" )
    else:
        print("Different networks")

任何人的幫助表示贊賞

我建議使用netaddr模塊來處理地址:

from netaddr import IPNetwork

if IPNetwork("128.233.17.12/255.255.0.0") == IPNetwork("128.233.12.17/255.255.0.0"):
    print "Same!"
else:
    print "Different!"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM