Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import re
- def is_ipv4_addr(s):
- regexp = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}' + \
- '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
- if re.search(regexp, s):
- return True
- def is_ipv4_cidr(s):
- regexp = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}' + \
- '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' + \
- '(\\/)(3[0-2]|[012][0-9]|[0-9]?)$'
- if re.search(regexp, s):
- return True
- def preflen_to_mask(preflen):
- bits = 0
- for i in range(32 - int(preflen), 32):
- bits |= (1 << i)
- return '%d.%d.%d.%d' % ((bits & 0xff000000) >> 24, \
- (bits & 0xff0000) >> 16, \
- (bits & 0xff00) >> 8, \
- (bits & 0xff))
- def ipv4_network_addr(addr, mask):
- return '.'.join([str(int(octet) & int(masked)) \
- for octet, masked in zip(addr.split('.'), mask.split('.'))])
- def is_network(addr, preflen):
- mask = preflen_to_mask(preflen)
- network = ipv4_network_addr(addr, mask)
- if network == addr:
- return True
- def is_ipv4_cidr_addr(s):
- if not is_ipv4_cidr(s):
- return False
- addr, preflen = s.split('/')
- if not is_network(addr, preflen):
- return True
- def is_ipv4_cidr_netw(s):
- if not is_ipv4_cidr(s):
- return False
- addr, preflen = s.split('/')
- if is_network(addr, preflen):
- return True
- def is_ipv4_range(s):
- regexp = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}' + \
- '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' + \
- '(\\-)' + \
- '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}' + \
- '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
- if not re.search(regexp, s):
- return False
- addr1, addr2 = s.split('-')
- addr1 = addr1.split('.')
- addr2 = addr2.split('.')
- for i in range(4):
- if int(addr1[i]) > int(addr2[i]):
- return False
- return True
- def main(arg):
- if is_ipv4_addr(arg):
- print('%s - ipv4 address' %arg)
- elif is_ipv4_cidr_addr(arg):
- print('%s - ipv4 cidr addr' %arg)
- elif is_ipv4_cidr_netw(arg):
- print('%s - ipv4 cidr netw' %arg)
- elif is_ipv4_range(arg):
- print('%s - ipv4 range' %arg)
- if __name__ == '__main__':
- args = sys.argv[1:]
- for arg in args:
- main(arg)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement