# Validate an IP address # # usage: ynh_validate_ip [family] [ip_address] # | ret: 0 for valid ip addresses, 1 otherwise # # example: ynh_validate_ip 4 111.222.333.444 # ynh_validate_ip() { # http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python#319298 local IP_ADDRESS_FAMILY=$1 local IP_ADDRESS=$2 [ "$IP_ADDRESS_FAMILY" == "4" ] || [ "$IP_ADDRESS_FAMILY" == "6" ] || return 1 python /dev/stdin << EOF import socket import sys family = { "4" : socket.AF_INET, "6" : socket.AF_INET6 } try: socket.inet_pton(family["$IP_ADDRESS_FAMILY"], "$IP_ADDRESS") except socket.error: sys.exit(1) sys.exit(0) EOF } # Validate an IPv4 address # # example: ynh_validate_ip4 111.222.333.444 # # usage: ynh_validate_ip4 # | ret: 0 for valid ipv4 addresses, 1 otherwise # ynh_validate_ip4() { ynh_validate_ip 4 $1 } # Validate an IPv6 address # # example: ynh_validate_ip6 2000:dead:beef::1 # # usage: ynh_validate_ip6 # | ret: 0 for valid ipv6 addresses, 1 otherwise # ynh_validate_ip6() { ynh_validate_ip 6 $1 }