Pythonでホスト名とIPアドレスを取得する。
サーバー上でプログラムを動かしていると、Pythonでホスト名やIPを取得したいことがある。
今回はPythonでホスト名やIPが取得できると嬉しい理由と取得する方法について紹介する。
IPアドレスとは?
「そもそもIPアドレスとは何ぞ?」という方の為にざっくり説明すると、IPアドレスとはアドレスの名が示すようにネットワーク上の住所である。
まぁ数値で示されるので住所というよりは緯度経度のような座標の方が近いだろうか。
このIPアドレスを使ってPCやサーバーはデータの送信元と送信先を判別している。
IPアドレス(アイピーアドレス、英: Internet Protocol address)とは、IPにおいてパケットを送受信する機器を判別するための番号である。
IPアドレス - Wikipedia
ホスト名とは?
「じゃあホスト名って何よ?」となる訳だが、ホスト名はIP(座標)に対応する名称(地名)である。
イメージとしては、地名は予め知っておかなければ場所がわからないが、座標であれば場所を特定できる感覚。
ホスト名(ホストめい)あるいはサイト名(サイトめい)とは、コンピュータ、ファイルサーバ、ネットワークストレージデバイス、FAX、コピー機、ケーブルモデム、ルータなどネットワークに接続された機器(ホスト)に付けられた名前。ホスト名はWorld Wide Web、電子メールあるいはUsenetのようなさまざまな電子通信の形式において特定のホストを識別するために使われる。
インターネット上では、「ホスト名」と「ドメイン名」はしばしば同じ意味で使われるが、両者には微妙な技術的違いがある。
ホスト名 - Wikipedia
ホスト名やIPがわかると何が嬉しいか
ホスト名やIPが取得できるとシステム運用に役立つ。
- マシンを判別できる
例えば同じ内容のコード sample.py
が同じ設定をされた サーバーA
と サーバーB
で動いている場合を考える。
sample.py
の内容は変わらないので、サーバーA
上の動作と サーバーB
上の動作は同じになるので区別が付かない。
サーバーA
上で例外が発生して警告メールを送信しても サーバーA
を区別できる情報が無ければどちらで例外が発生したかわからないが、ホスト名やIPがわかれば サーバーA
と サーバーB
を区別することができる。
ホスト名やIPの取得方法
ホスト名やIPを取得するには socket
を利用する。
[python title="socket_sample.py"]
import socket
host = socket.gethostname()
print(host)
#hoge PC
ip = socket.gethostbyname(host)
print(ip)
#192.168.0.X
[/python]
参考
PythonでIPアドレスを取得する方法【初心者向け】 | TechAcademyマガジン
まとめ
- ホスト名やIPはネットワーク上の住所のようなもの
- ホスト名やIPがわかるとマシンの特定に役立つ
- ホスト名やIPを取得するには
socket
を利用する