Vérifier s'il s'agit d'une adresse IP correcte ou non dans Python

Que faire pour s’assurer que l’IP saisie par l’utilisateur est valide ? Elle est entrée sous forme de chaîne de caractères.

Veuillez essayer le code suivant:

import socket

try:
    socket.inet_aton(addr)
    # IP valide
except socket.error:
    # IP non valide

Depuis la version 3.4 de Python, pour vérifier si une adresse IPv6 ou IPv4 est correcte, il suffit d’utiliser le module ipaddress de la bibliothèque standard de Python.

Exemple :

#!/usr/bin/env python

import ipaddress
import sys

try:
    ip = ipaddress.ip_address(sys.argv[1])
    print('%s est une adresse IP%s correcte.' % (ip, ip.version))
except ValueError:
    print('n\'est pas valide : %s' % sys.argv[1])
except:
    print('Utilisation: IP %s' % sys.argv[0])

Pour l’installer avec pip :

pip install ipaddress

Voilà c’est assez facile pour s’assurer que l’IPv4 saisie par l’utilisateur est valide:

def validIP(address):
    parts = address.split(".")
    if len(parts) != 4:
        return False
    for item in parts:
        if not 0 <= int(item) <= 255:
            return False
    return True