Il existe plusieurs manières de déterminer la classe d’une adresse IP en Python. Voici deux options possibles :
Utiliser une expression régulière (regex) pour vérifier si l’adresse IP appartient à l’une des classes d’adresses suivantes :
-
Classe A : adresses allant de 0.0.0.0 à 126.0.0.0
- Classe B : adresses allant de 128.0.0.0 à 191.0.0.0
- Classe C : adresses allant de 192.0.0.0 à 223.0.0.0
Voici un exemple de code qui utilise une regex pour vérifier si une adresse IP appartient à la classe A / B ou C :
import re
def get_ip_class(ip_address):
if re.match(r"^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$", ip_address):
if ip_address.startswith("0."):
return "Class A"
elif ip_address.startswith("128."):
return "Class B"
elif ip_address.startswith("192."):
return "Class C"
return "Invalid IP"
# Exemples d'utilisation
print(get_ip_class("10.0.0.1")) # "Class A"
print(get_ip_class("172.16.0.1")) # "Class B"
print(get_ip_class("192.168.0.1")) # "Class C"
print(get_ip_class("256.0.0.1")) # "Invalid IP"
Il est aussi possible d’utiliser la bibliothèque ipaddress pour valider et analyser l’adresse IP. La bibliothèque ipaddress propose des fonctionnalités pour traiter et manipuler des adresses IP et des réseaux en Python. Voici un exemple de code qui utilise la bibliothèque ipaddress pour déterminer la classe d’une adresse IP :
import ipaddress
def get_ip_class(ip_address):
try:
ip = ipaddress.ip_address(ip_address)
if ip.is_private:
return "Private IP"
elif ip.is_reserved:
return "Reserved IP"
elif ip.is_multicast:
return "Multicast IP"
elif ip.is_unspecified:
return "Unspecified IP"
elif ip.is_loopback:
return "Loopback IP"
elif ip.is_link_local:
return "Link Local IP"
else:
if ip.version == 4:
if ip.is_global:
if ip.is_private:
return "Private IP"
else:
return "Global IP"
else:
return "Other IP"
elif ip.version == 6:
if ip.is_global:
return "Global IPv6"
elif ip.is_link_local:
return "Link Local IPv6"
elif ip.is_site_local:
return "Site Local IPv6"
elif ip.is_unique_local:
return "Unique Local IPv6"
else:
return "Other IPv6"
except ValueError:
return "Invalid IP"
# Exemples d'utilisation
print(get_ip_class("10.0.0.1")) # "Private IP"
print(get_ip_class("172.16.0.1")) # "Private IP"
print(get_ip_class("192.168.0.1")) # "Private IP"
print(get_ip_class("8.8.8.8")) # "Global IP"
print(get_ip_class("2001:0db8:85a3:0000:0000:8a2e:0370:7334")) # "Global IPv6"
print(get_ip_class("fe80::1")) # "Link Local IPv6"
print(get_ip_class("fd00::1")) # "Unique Local IPv6"
print(get_ip_class("256.0.0.1")) # "Invalid IP"
Notez que la bibliothèque ipaddress permet de déterminer non seulement la classe d’une adresse IP, mais également son type (privée, publique, de bouclage, etc.). Vous pouvez utiliser les différentes méthodes proposées par la bibliothèque pour obtenir ces informations.