Pythonを使ってシステムのホスト名を取得する方法は、ネットワークプログラミングやシステム管理の際に非常に役立ちます。以下では、特にPython標準ライブラリのsocketモジュールとplatformモジュールを使ったホスト名取得の方法について詳しく解説します。

基本的なホスト名取得 - socket.gethostname()

最もシンプルで一般的な方法は、socketモジュールのgethostname()メソッドを使うことです。この関数は、実行しているマシンのホスト名を返します。

import socket
print(socket.gethostname())

このコードを実行すると、ホスト名が出力されます。例えば、「my-computer」という結果が得られるかもしれません。

クロスプラットフォーム対応 - platform.node()

platformモジュールもホスト名を取得するために使われます。特に、クロスプラットフォームな環境での利用が期待される場合に役立ちます。

import platform
print(platform.node())

platform.node()は、socket.gethostname()と似たような動作をしますが、環境によって異なる結果が返ることがあります。例えば、あるシステムではFQDN(完全修飾ホスト名)を返し、他のシステムでは単純なホスト名のみを返すことがあります。

FQDN(完全修飾ホスト名)を取得する - socket.getfqdn()

完全修飾ホスト名(FQDN)を取得したい場合には、socket.getfqdn()を使用します。この関数は、通常のホスト名にドメイン名を加えたフルの名前を返します。

import socket
print(socket.getfqdn())

このコードを実行すると、例えば「my-computer.example.com」のような結果が得られます。これは、ドメイン名付きでホスト名を取得する場合に便利です。

osモジュールを使った方法

他にも、osモジュールのos.uname()メソッドを使ってホスト名を取得する方法もありますが、これはUnix系システムでのみ動作します。Windowsでの利用を考える場合、socketplatformの方が汎用性があります。

import os
print(os.uname().nodename)

まとめ

  • Pythonでホスト名を取得するには、socket.gethostname()platform.node()を使う方法が簡単でポータブルです。
  • クロスプラットフォーム対応が必要な場合には、socketplatformモジュールの利用を推奨します。
  • 完全修飾ホスト名(FQDN)が必要な場合は、socket.getfqdn()を使用することで、ドメイン名も含めた情報が得られます。 これらの方法を活用することで、ホスト名の取得を容易に行うことができます。