Nach IP-Adressen suchen

8

Gibt es Bibliotheken, die eine Zeichenfolge als IPv4- oder IPv6-Adresse analysieren oder zumindest angeben, ob es sich bei einer Zeichenfolge um eine IP-Adresse (von beliebiger Art) handelt?

    
Rory 06.08.2012, 12:07
quelle

8 Antworten

14

Ja, es gibt ipaddr Modul, mit dem Sie überprüfen können, ob eine Zeichenfolge eine IPv4 / IPv6-Adresse ist, und um deren Version zu erkennen.

%Vor%

Aber das ist kein Standardmodul, daher ist es nicht immer möglich, es zu benutzen. Sie versuchen auch, das Standardmodul socket zu verwenden:

%Vor%

Für IPv6-Adressen müssen Sie socket.inet_pton(socket.AF_INET6, address) verwenden.

Ich möchte auch darauf hinweisen, dass inet_aton versucht, Adressen wie 10 , 127 usw., die nicht wie IP-Adressen aussehen, zu konvertieren (und wirklich zu konvertieren).

    
Igor Chubin 06.08.2012, 12:09
quelle
7

für IPv4 Sie können

verwenden %Vor%

Wenn es eine Ausnahme auslöst, ist some_string keine gültige IP-Adresse

Für IPv6 können Sie Folgendes verwenden:

%Vor%

erneut, es wird eine Ausnahme ausgelöst, wenn some_string keine gültige Adresse ist

    
John La Rooy 06.08.2012 12:10
quelle
4

IPv4 + IPv6-Lösung, die nur auf der Standardbibliothek basiert. Gibt 4 oder 6 zurück oder erhöht ValueError .

%Vor%     
Oleh Prypin 14.05.2015 15:51
quelle
2

Sie können die netaddr -Bibliothek verwenden. Es hat valid_ipv4 / valid_ipv6 Methoden:

%Vor%     
jfhfhf839 25.09.2016 14:19
quelle
1

ipaddr - das IP-Adressbearbeitungspaket von Google.

Beachten Sie, dass ein Vorschlag, eine überarbeitete Version des Pakets in die Python-Standardbibliothek aufzunehmen, kürzlich akzeptiert wurde (siehe PEP 3144 ).

    
Ghopper21 06.08.2012 12:09
quelle
1

Versuchen Sie

%Vor%

oder rufen Sie den Quellcode von hier

ab     
Bruce Barnett 30.05.2013 20:22
quelle
1

Wenn Sie sicher sind, dass die Adresse gültig ist und nur versuchen zu entscheiden, ob es ipv4 oder ipv6 ist, wäre es nicht ausreichend, nur zu tun:

%Vor%     
Jendas 19.08.2016 12:45
quelle
0

Ich bevorzuge ip_interface, weil es Situationen sowohl mit als auch ohne Präfixmaske behandelt, zum Beispiel sowohl "10.1.1.1/24" als auch einfach "10.1.1.1". Unnötig zu sagen, funktioniert sowohl für v4 als auch für v6

%Vor%     
A-C 22.11.2017 23:09
quelle

Tags und Links