はじめに
ラズパイを使用してIPアドレスを取得するコードを書く機会がありました。
はじめに実装したコードでプログラムを実行したときにIPアドレスを取得できましたが
ループバックアドレスが取得されるだけということがありました。
IPアドレスを取得する方法はいくつかありますが
その中でも3つ簡易的なコードと合わせて紹介していきます。
対象読者
- IPアドレスを取得したい方
- 自分と同じようにそういった機会がある人
目次
IPアドレスを取得するプログラム
1. 冒頭でも触れたループバックアドレスを取得するプログラム
- 「python IPアドレス」 と検索したらまずはじめにでてくる(でてきた)IPアドレスを取得する方法
import socket
ip = socket.gethostbyname(socket.gethostname())
print(ip)
2. Pythonの標準ライブラリを使用
- 標準ライブラリを使用してお手軽にIPアドレスを取得する方法
- ネットワークに接続するために使用されるインターフェイスのIPアドレスを取得
- インターフェイスを指定するわけではないが実際に使用されるインターフェイスのIPアドレスを取得することができる
import socket
connect_interface = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
connect_interface.connect(("8.8.8.8", 80))
print(connect_interface.getsockname()[0])
connect_interface.close()
3. 指定したインターフェイスのIPアドレスを取得することができる
- モジュールをインストールしてIPアドレスを取得する方法
- 求めているインターフェイスを明示的に指定できるため取得したIPアドレスを取得することができる
import ipget
target_ip = ipget.ipget()
print(target_ip.ipaddr("eth0"))
おわりに
どのような方法で取得するのが正しいかなどはわかりませんが
たくさんの選択肢があるということを念頭においてユースケースによって使い分けられたらと思います。