Pythonでホスト名とIPアドレスを取得する方法

Python では、ソケット モジュールの gethostname()、getfqdn()、および gethostbyname() メソッドを使用して、ローカルおよびリモートのホスト名と IP アドレスを取得できます。

1 ローカルおよびリモートのホスト名を取得する

1.1 ローカルホスト名を取得する

gethostname() メソッドを使用して、ローカル マシンのホスト名であるローカル ホスト名を取得できます。コードは次のとおりです。

host_name = socket.gethostname()
print('本机主机名是:%s'%host_name)

このときの走行効果を図1に示します。

図1 ローカルホスト名

このうち、gethostname()メソッドで取得するローカルホスト名は文字列形式です。

1.2 リモートホスト名を取得する

getfqdn() メソッドを使用してリモート ホスト名を取得し、リモート ホストの IP アドレスをメソッドのパラメーターとして使用します。コードは次のとおりです。

remote_host_name = socket.getfqdn('192.168.147.129')
print('IP地址是192.168.147.129的远程主机,其主机名是:%s'%remote_host_name)

このときの走行効果を図2に示します。

図 2 リモートホスト名

注 1. リモート ホスト名を正常に取得するには、ローカル ホストとリモート ホストがネットワーク上で接続されていることを確認する必要があります。

2 ローカルホストとリモートホストの IP アドレスを取得します。

gethostbyname() メソッドを使用してローカル ホストまたはリモート ホストの IP アドレスを取得できます。このメソッドのパラメータとしてローカル ホストまたはリモート ホストのホスト名を使用するだけで済みます。

ip_address = socket.gethostbyname(host_name)
print('本机的IP地址是%s'%ip_address)
remote_host_addr = socket.gethostbyname(remote_host_name)
print('名为WIN-EC116TBKMQH的主机,其IP地址是:%s'%remote_host_addr)

上記のコードでは、「1 ローカルおよびリモートのホスト名の取得」で取得したローカル ホスト名である host_name がパラメータとして gethostbyname() メソッドに渡され、ローカル ホストの IP アドレスが取得されます。「1」を変更します。ローカルおよびリモートのホスト名を取得します。 「ホスト名」で取得したリモート ホスト名をパラメータとして gethostbyname() メソッドに渡し、リモート ホストの IP アドレスを取得します。ランニング効果を図 3 に示します。

図3 IPアドレスの取得

3 WebサイトのIPアドレスを取得する

gethostbyname() メソッドは、ローカル ホストとリモート ホストの IP アドレスを取得するだけでなく、Web サイトの IP アドレスも取得できます。このメソッドにパラメータとして Web サイトのドメイン名を渡すだけです。次のコードは、Baidu Web サイトの IP アドレスを取得するためのものです。

baidu_addr = socket.gethostbyname('www.baidu.com')
print('百度网站的IP地址是:%s'%baidu_addr)

その作用効果を図4に示します。

図4 Baidu WebサイトのIPアドレスの取得

注 2: 上記のコードを使用する前に、ソケット モジュールをインポートする必要があります。

import socket

おすすめ

転載: blog.csdn.net/hou09tian/article/details/133071156