PythonでIPアドレスからホスト名、ホスト名からIPアドレスを取得するには?
プログラム処理中にIPアドレスからホスト名取得やホスト名からIPアドレスを取得したい場合があります。本記事では、Pythonで処理する方法を紹介します。
PythonでIPアドレスからホスト名、ホスト名からIPアドレスを取得するサンプルコード
サンプルコードを紹介します。
import socket
def get_hostname(ip_address):
"""
指定されたIPアドレスからホスト名を取得します。
Args:
ip_address (str): ホスト名を取得したいIPアドレス。
Returns:
str: 取得したホスト名。変換できない場合は空文字列を返します。
"""
try:
# gethostbyaddrを使用してIPアドレスからホスト名を取得
hostname, _, _ = socket.gethostbyaddr(ip_address)
return hostname
except Exception as e:
# 例外が発生した場合はエラーメッセージを表示し、空文字列を返す
print(f"エラー: {e}")
return ""
def get_ipadress(hostname):
"""
指定されたホスト名からIPアドレスを取得します。
Args:
hostname (str): IPアドレスを取得したいホスト名。
Returns:
str: 取得したIPアドレス。変換できない場合は空文字列を返します。
"""
try:
# gethostbynameを使用してホスト名からIPアドレスを取得
return socket.gethostbyname(hostname)
except Exception as e:
# 例外が発生した場合はエラーメッセージを表示し、空文字列を返す
print(f"エラー: {e}")
return ""
##############################################################
# 関数のテスト
if __name__ == "__main__":
# テスト
# IPアドレスを指定。
test_ip = "127.0.0.1"
# IPアドレスからホスト名を取得
hostname = get_hostname(test_ip)
print(f"Hostname for {test_ip}: {hostname}")
# ホスト名からIPアドレスを取得
ip_address = get_ipadress(hostname)
print(f"IP Address for {hostname}: {ip_address}")
実行結果
Hostname for 127.0.0.1: MYPC
IP Address for MYPC: 192.168.121.6
この例では、127.0.0.1(ローカルホスト)を指定してホスト名MYPCを取得、その後MYPCからIPアドレスを取得しているので実際のIPアドレスが表示されています。
エラー: [Errno 11004] host not found
Hostname for 127.0.0.111:
IP Address for : 0.0.0.0
エラーの場合にはエラーを返しますが、get_ipadress関数でホスト名から変換できなかった場合「0.0.0.0」で返すので注意が必要です。
最後に
以上がPythonでIPアドレスからホスト名、ホスト名からIPアドレスを取得する方法です。
サーバーのログに記録されたIPアドレスからどのホストがアクセスしているかを特定し、アクセスパターンの分析等で利用する場合があると思いますので試してみてはいかがでしょうか。
コメント