I have written my own python ip/subnet tool. It works in both python 2 and 3. It does not have dependencies except standard 're' module.
Use theese methods to conver ip mask formats and to check if ip/subnet belong to other subnet. I made it partly for fun and to learn, so perhaps these are not the best, but they get the job done. Checking if ip belongs to subnet is even a bit faster, than with tools from netaddr module.
Methods provided:
- is_in_subnet : check if ip belongs to subnet
- is_in_range : check if ip belongs to ip range
- verify : check if ip or ip/netmask are valid
- get_subnet_ip : get subnet ip for some ip/mask
- mask255_to_dec : convert ip mask format
- dec_to_mask255 : convert ip mask format
- is_mask : check if ip mask is real
Instalation:
pip install iptoolsjj
Import:
import iptoolsjj
Examples:
Check if 192.168.10.10 is inside 192.168.10.0/22:
print(iptoolsjj.is_in_subnet('192.168.10.10', '192.168.10.0/22'))
Check if 192.168.51.1 is between 192.168.50.100 and 192.168.60.50:
print(iptoolsjj.is_in_range('192.168.50.100','192.168.60.50','192.168.51.1'))
Verify if ip or ip with mask is valid:
print(iptoolsjj.verify('192.168.1.22'))
print(iptoolsjj.verify('192.168.1.22/25','ip/mask'))
print(iptoolsjj.verify('192.168.1.22/255.255.255.128','ip/mask255'))
Get subnet ip for given ip address:
print(iptoolsjj.get_subnet_ip('191.123.1.36/27'))
Convert mask '255.255.255.240' to '28':
print(iptoolsjj.mask255_to_dec('255.255.255.240'))
Convert mask '28' to '['255', '255', '255', '240']' (by default it's list format):
print(iptoolsjj.dec_to_mask255(28))
or
print(iptoolsjj.dec_to_mask255(28,output='string'))
Check if mask is real mask in format xxx.xxx.xxx.xxx:
print(is_mask("255.255.255.0"))