Python ipaddress.IPv6Address AddressValueError beheben: Unexpected '/' in '.../64'

English Deutsch

Problem:

Beim Versuch, eine IPv6-Netzwerkadresse in Python mit Code wie

example_ipaddress.py
import ipaddress
ipaddress.IPv6Network("2a01:c23:c0bb:d00:8ce6:2eff:fe60:cc69/64")

erscheint eine Fehlermeldung wie

AddressValueError Traceback (most recent call last) /tmp/ipykernel_154945/2602627019.py in

/usr/lib/python3.8/ipaddress.py in init(self, address) 1836 addr_str = str(address) 1837 if ‘/’ in addr_str: 1839 self._ip = self._ip_int_from_string(addr_str) 1840

AddressValueError: Unexpected ‘/’ in ‘2a01:c23:c0bb:d00:8ce6:2eff:fe60:cc69/64’

traceback.txt
---------------------------------------------------------------------------
AddressValueError                         Traceback (most recent call last)
/tmp/ipykernel_154945/2602627019.py in <module>
----> 1 ipaddress.IPv6Address("2a01:c23:c0bb:d00:8ce6:2eff:fe60:cc69/64")

/usr/lib/python3.8/ipaddress.py in __init__(self, address)
     1836         addr_str = str(address)
     1837         if '/' in addr_str:
-> 1838             raise AddressValueError("Unexpected '/' in %r" % address)
     1839         self._ip = self._ip_int_from_string(addr_str)
     1840

AddressValueError: Unexpected '/' in '2a01:c23:c0bb:d00:8ce6:2eff:fe60:cc69/64'

Lösung 1: CIDR-Netzmaske entfernen (/64)

Durch einfaches Entfernen des Schrägstrichs und des Teils danach (der CIDR-Netzmaske).

Lösung 1: Vielleicht sollte stattdessen IPv6Network statt IPv6Address verwendet werden

Wenn das Netzwerk geparst werden soll, ipaddress.IPv6Network verwenden, aber beachten, dass dies alle Host-Bits verwirft. Ob IPv6Address oder IPv6Network verwendet werden sollte, hängt davon ab, was damit gemacht werden soll – wenn auf einen spezifischen Host verwiesen werden soll, wird fast immer IPv6Address verwendet.

example_ipv6network.py
import ipaddress
ipaddress.IPv6Network("2a01:c23:c0bb:d00:8ce6:2eff:fe60:cc69/64", strict=False)

Beachten, dass strict=False hinzugefügt wird, um eine Ausnahme aufgrund gesetzter Host-Bits zu verhindern – siehe Python ipaddress.IPv6Network ValueError beheben: … has host bits set


Check out similar posts by category: Networking, Python