簡體   English   中英

在給定 IP 和子網掩碼時確定網絡 IP

[英]Determine Network IP when given an IP and subnet mask

在 Python 中,如果我有一個 IP 地址和一個子網掩碼作為字符串,我如何確定網絡 IP?

即 IP = 10.0.0.20,掩碼 = 255.255.255.0 將導致網絡 IP 為 10.0.0.0

模塊ipcalc可以快速處理作為字符串的 ip 地址:

代碼:

import ipcalc

addr = ipcalc.IP('10.0.0.20', mask='255.255.255.0')
network_with_cidr = str(addr.guess_network())
bare_network = network_with_cidr.split('/')[0]

print(addr, network_with_cidr, bare_network)

結果:

IP('10.0.0.20/24') '10.0.0.0/24' '10.0.0.0'

好吧,我可能應該發布我所做的..它適用於我的目的:

# Return the network of an IP and mask
def network(ip,mask):

    network = ''

    iOctets = ip.split('.')
    mOctets = mask.split('.')

    network = str( int( iOctets[0] ) & int(mOctets[0] ) ) + '.'
    network += str( int( iOctets[1] ) & int(mOctets[1] ) ) + '.'
    network += str( int( iOctets[2] ) & int(mOctets[2] ) ) + '.'
    network += str( int( iOctets[3] ) & int(mOctets[3] ) )

    return network

您可以使用內置的ipaddress庫:

import ipaddress
network = ipaddress.IPv4Network('10.0.0.20/255.255.255.0', strict=False)
print(network.network_address)

結果:

10.0.0.0

暫無
暫無

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

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