Fwd: Is there a function of ipaddress to get the subnet only from input like 192.168.1.129/25

Nathan Hilterbrand nhilterbrand at gmail.com
Tue Oct 17 15:52:25 EDT 2017


Hit wrong button before.

---------- Forwarded message ----------
From: Nathan Hilterbrand <nhilterbrand at gmail.com>
Date: Tue, Oct 17, 2017 at 2:22 PM
Subject: Re: Is there a function of ipaddress to get the subnet only from
input like 192.168.1.129/25
To: Rob Gaddi <rgaddi at highlandtechnology.invalid>


I may have misunderstood what you were looking for, but went ahead and
cobbled this ugly function together.  Takes a string like "192.168.1.128/25"
as input, and returns the subnet address.  Just slapped together, so not
the most robust thing in the world

def subnet(inp):

    addr, bits = inp.split('/')
    mask = 2 ** (32 - int(bits)) - 1
    allones = (2 ** 32) - 1
    mask = allones ^ mask

    addroctets = [int(o) for o in addr.split('.')]
    addrval = 0
    for o in addroctets:
        addrval = addrval * 256 + o

    snval = addrval & mask

    snoctets = []
    q = snval
    for i in range(4):
        q,r = divmod(q, 256)
        snoctets.insert(0,str(r))

    sn = ".".join(snoctets)

    return sn




On Tue, Oct 17, 2017 at 1:36 PM, Rob Gaddi <rgaddi at highlandtechnology.
invalid> wrote:

> On 10/17/2017 09:59 AM, Daniel Flick wrote:
>
>> I am very new to Python and have been struggling to find some info on
>> processing IP addresses.
>>
>> get_network returns 192.168.1.128/25 but I need 192.168.1.128 only.  I
>> can do this with netaddr but I am working with Mako templates and ipaddress
>> is a built in module so there are less dependencies.
>>
>> Any ideas?
>>
>>
> You mean, other than .split('/')?
>
> --
> Rob Gaddi, Highland Technology -- www.highlandtechnology.com
> Email address domain is currently out of order.  See above to fix.
> --
> https://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list