IP-Adresse aus Hostname ermitteln

Python Socket-Modul zum Abrufen der IP-Adresse aus dem Hostnamen

Das Python Socket-Modul gethostbyname()-Funktion akzeptiert einen Hostnamen als Argument und gibt die IP-Adresse im String-Format zurück.

Hier ist ein einfaches Beispiel im Python-Interpreter, um die IP-Adresse einiger Websites herauszufinden.

# python3.7
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 16:52:21) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import socket
>>> socket.gethostbyname('journaldev.com')
'45.79.77.230'
>>> socket.gethostbyname('google.com')
'172.217.166.110'
>>> 

Hinweis: Wenn die Website hinter einem Load-Balancer liegt oder in der Cloud arbeitet, erhalten Sie möglicherweise ein anderes Ergebnis bei der IP-Adresssuche.

Python-Skript um IP-Adresse aus Hostname ermitteln

Lassen Sie uns ein Beispiel betrachten, bei dem wir den Benutzer bitten, eine Website-Adresse einzugeben und dann deren IP-Adresse auszudrucken.


import socket

hostname = input("Please enter website address:\n")

# IP lookup from hostname
print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')


Hier ist ein weiteres Beispiel, um den Hostnamen als Befehlszeilenargument an das Skript zu übergeben. Das Skript wird die IP-Adresse finden und ausdrucken.

import socket
import sys

# no error handling is done here, excuse me for that
hostname = sys.argv[1]

# IP lookup from hostname
print(f'The {hostname} IP Address is {socket.gethostbyname(hostname)}')

Output:

# python3.7 ip_address.py facebook.com
The facebook.com IP Address is 157.240.23.35

IP-Adresse aus Hostname ermitteln – Fehlerszenarien mit socket.gethostbyname()

Wenn der Hostname nicht in eine gültige IP-Adresse aufgelöst wird, wird socket.gaierror ausgelöst. Wir können diesen Fehler in unserem Programm mit einem try-except-Block abfangen.

Hier ist das aktualisierte Skript mit Ausnahmebehandlung für ungültige Hostnamen.

import socket
import sys

hostname = sys.argv[1]

# IP lookup from hostname
try:
    ip = socket.gethostbyname(hostname)
    print(f'The {hostname} IP Address is {ip}')
except socket.gaierror as e:
    print(f'Invalid hostname, error raised is {e}')

Output:

# python3.7 ip_address.py jasjdkks.com               
Invalid hostname, error raised is [Errno 8] nodename nor servname provided, or not known

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: