ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【python】PCのIPアドレスを取得する

 過去に簡単なAPIサーバを作る記事を書きました。

 この記事ではホスト名をlocalhostにしていましたが、ローカルネットワーク上のサーバのAPIを叩いて確認したい場合などがあります。
 その場合はホスト名にIPアドレスを設定すると思いますが、一々調べてソースコード内の定数を書き換えるのは面倒です。
 実行しているPCのIPアドレスを自動的に取得するようにしていれば一々書き直す必要がなくなって楽になると思ったので、今回は実行しているPCのIPアドレスを取得する方法の備忘録になります。

 詳しくは参考資料に挙げているページ様を参照してください。


 では、始めます。


・実行しているPCのIPアドレスを取得する方法
 結論から書きますが、以下の方法で取得できます。

・get_ipaddress.py

# -*- coding: utf-8 -*-
import platform
import socket


# 実行PCのIPアドレスを取得する関数
def get_my_ipadress():
    ipaddress = ""

    if platform.system() == "Windows":
        # Windowsの場合のIPアドレス取得
        host = socket.gethostname()
        ipaddress = socket.gethostbyname(host)
    elif platform.system() == "Linux":
        # Linuxの場合のIPアドレス取得
        connect_interface = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        connect_interface.connect(("8.8.8.8", 80))
        ipaddress = connect_interface.getsockname()[0]
        connect_interface.close()

    return ipaddress


if __name__ == '__main__':
   ipaddress = get_my_ipadress()
   print(ipaddress)

 ソースの中身を見ればわかると思いますが、WindowsLinuxでそれぞれ取得方法が違います。

 これを実行すると「192.168.XXX.XXX」のような形のIPアドレスを取得することができます。


 以上が実行中のPCのIPアドレスを取得する方法になります。

 ソースコードを書いてみれば単純ですが、ちょっとしたテストサーバをRaspberry Piに立てる時などには使うことになりそうです。


・参考資料