Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでMACアドレスを取得する3つの方法をわかりやすく解説

MACアドレス(Media Access Control Address)は、PCに搭載されているネットワークカードに割り当てられた固有のハードウェアアドレスです。その名の通り必ず一意であり、同じローカルネットワーク上に存在する2つのデバイスが同一のMACアドレスを持つことはありません。

MACアドレスの主な役割は、LAN(ローカルエリアネットワーク)などのネットワーク上にあるすべてのノードに対して、一意のハードウェアアドレス(物理アドレス)を提供することです。ここでいうノードとは、コンピュータやプリンター、ルーターといったデバイスがネットワークに接続される接続点のことを指します。

この記事では、Pythonを使ってMACアドレスを取得する3つの方法を、サンプルコードと実行結果付きで順番に紹介します。

方法1:uuid.getnode() を使う(最もシンプルな方法)

標準ライブラリの uuid モジュールに用意されている getnode() 関数を使うと、コンピュータのMACアドレスを1行で取得できます。手軽さを重視するなら、まずこの方法を選びましょう。

サンプルコード

import uuid
print(hex(uuid.getnode()))

実行結果

0x242ac110002L

getnode() はMACアドレスを48ビットの整数値として返すため、hex() で16進数に変換して表示しています。なお、MACアドレスを検出できなかった場合には、ランダムな48ビットの数値が返される点に注意してください。

方法2:getnode() + format() で見やすい形式に整形する

そのままの数値では読みづらいという場合は、format() と組み合わせることで、「3e:f8:e2:8b:2c:b3」のように2桁ずつコロン(:)で区切った、一般的なMACアドレス表記へ整形できます。

サンプルコード

import uuid
# 2桁ごとに区切って、getnode() の各要素を結合する
print("The formatted MAC address is : ", end="")
print(':'.join(['{:02x}'.format((uuid.getnode() >> elements) & 0xff)
for elements in range(0, 2*6, 2)][::-1]))

実行結果

The formatted MAC address is : 3e:f8:e2:8b:2c:b3

ビットシフトと & 0xff によって下位8ビットずつ取り出し、逆順に並べ替えることで、正しい桁順のMACアドレスを生成しています。

方法3:getnode() + findall() + re() で簡潔に記述する

正規表現を扱う re モジュールの findall() を活用すると、コードをより短く、複雑さの少ない形で書けます。可読性と保守性を重視したい場合におすすめの方法です。

サンプルコード

import re, uuid
# 正規表現を使って、2桁ごとに要素を結合する
print("The MAC address in expressed in formatted and less complex way : ", end="")
print(':'.join(re.findall('..', '%012x' % uuid.getnode())))

実行結果

The MAC address in expressed in formatted and less complex way : 18:5e:0f:d4:f8:b3

'%012x' で12桁の16進数文字列に変換し、re.findall('..', ...) で2文字ずつ切り出してコロンで連結しています。方法2に比べて処理の意図が明快になり、コード量も大幅に削減できます。

まとめ

PythonでMACアドレスを取得するには、標準ライブラリの uuid.getnode() が基本となります。用途に応じて、以下のように使い分けるとよいでしょう。

  • 手軽に値を取得したい場合: 方法1の hex(uuid.getnode())
  • 整形された形式で表示したい場合: 方法2の format() を使った方法
  • 簡潔で読みやすいコードにしたい場合: 方法3の正規表現を使った方法

いずれの方法も追加パッケージのインストールは不要なので、環境を問わずすぐに試せます。ぜひ自分のプロジェクトに合わせて活用してください。

  1. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c

  2. MacでPython 3にアップグレードして使いこなす方法

    購入したばかりの新しいMacには、必要なソフトウェアの最新版がすべて入っていると思いがちですが、ユーザー向けアプリについては概ね正しくても、基盤となるフレームワークに関しては話が別です。安定版の最新リリースがPython 3.5であるにもかかわらず、新しいMacには今なおPython 2.7.10がプリインストールされています。バージョン間の差が大きく感じられるのはそのためです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python 3はPython 2との後方互換性を持たず、多くの開発者は依然としてPython 2を使い続けているのです。 2to3を使うか、使わないか?