Рубрики
Без рубрики

Python – Получить IP-адрес от имени хоста

Модуль Python Socket может использоваться для получения IP-адреса из хоста имена. Модуль сокета является частью основных библиотек Python, поэтому нам не нужно

Автор оригинала: Pankaj Kumar.

Модуль Python Socket может использоваться для получения IP-адреса из хоста имена.

Модуль сокета является частью библиотек Core Python, поэтому нам не нужно устанавливать его отдельно.

Модуль Python Socket, чтобы получить IP-адрес от имени хоста

Модуль сокета Python GetHostbyName () Функция принимает аргумент HostName и возвращает IP-адрес в строковом формате.

Вот простой пример в переводчике Python, чтобы узнать IP-адрес некоторых сайтов.

# 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'
>>> 

Примечание : Если сайт находится за нагрузкой и работает в облаке, вы можете получить другой результат для поиска IP-адреса.

Например, попробуйте запустить вышеуказанную команду для Google.com или Facebook.com. Если вы не в том же месте, что и мой (Индия), шансы состоят в том, что вы получите другой IP-адрес в качестве вывода.

Python Script, чтобы узнать IP-адрес сайта

Давайте посмотрим на пример, где мы просим пользователя ввести адрес веб-сайта, а затем распечатать его IP-адрес.

import socket

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

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

Вот еще один пример, чтобы пройти имя хоста в качестве аргумента командной строки к скрипту. Сценарий найдет IP-адрес и распечатает его.

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)}')

Выход :

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

Сценарии ошибок с розеткой.

Если имя хоста не разрешается до действительного IP-адреса, Socket.Gorror Поднялся. Мы можем поймать эту ошибку в нашей программе, используя попробуйте, кроме блокировать.

Вот обновленный скрипт с обработкой исключения для недопустимого имени хоста.

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}')

Выход:

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

Ссылка : Гукет Модуль API Документы