簡體   English   中英

如何從IP地址中刪除主機?

[英]how to remove host from ip address?

當前,我創建了一種生成隨機ip(IPv4)地址的方法,如下所示:

def rand_ip(mask=False):
    """This uses the TEST-NET-3 range of reserved IP addresses.
    """
    test_net_3 = '203.0.113.'
    address = test_net_3 + six.text_type(random.randint(0, 255))
    if mask:
        address = '/'.join((address,
                            six.text_type(random.randrange(24, 32))))
    return address

現在,我需要增強此方法,使其具有在啟用掩碼時刪除主機地址的能力,具體情況如下

1.1.2.23/24(before) => 1.1.2.0/24(after host address removed) 
1.1.2.23/16 => 1.1.0.0 (the same as above)

實際上,更改只是將十六進制的0替換為左部分(32-mask,從右到左),是否有任何簡單的方法或存在的lib可以做到這一點(應考慮python 2.7x和3.x的兼容性)?

這是您要找的東西嗎?

>>> from netaddr import *
>>> ip = IPNetwork('1.1.2.23/16')
>>> ip.ip
IPAddress('1.1.2.23')
>>> ip.network
(IPAddress('1.1.0.0')
>>> ip.netmask
(IPAddress('255.255.0.0')

要隨機生成IP和網絡掩碼,可以使用此代碼。 不過,這可以做得更好。

import random
def get_random_ip():
    def ip():
        return random.randint(0, 255)

    value = str(ip())
    for i in range(3):
        value = value + "." + str(ip())

    return value

def get_random_cidr():
    return random.randrange(24, 32)

暫無
暫無

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

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