MasaのITC Life

夢は起業家!全てにおいて凡人だけど頑張ることだけはいっちょ前!

プログラミング

Go言語でMACアドレスを取得する方法!

投稿日:2020年5月16日 更新日:



今回はGo言語でインターフェースの

MACアドレスを取得していきます。



C++であれば、ioctlシステムコールで

Macアドレスを取得できます。

ifreq構造体にその値が格納されます。




それでは実際に取得していきましょう。



まずは実行結果です。



ソースです。


たったこれだけで取得ができます。



余分な箇所は省くために、

インターフェース名は、

ソース内で指定しています。



コマンドライン引数で指定したい

という場合は、flagパッケージを

使用すれば実装出来ます。



インターフェース名から

インターフェース情報を取得するには、

InterfaceByName関数を使います。




netパッケージ内で定義されています。



InterfaceByName関数の戻り値は、

Interface構造体です。

Interface構造体もnet内で定義されています。




指定したインターフェース名の情報を

Interface構造体の各メンバに格納します。



あとはHardwareAddrメンバを出力するだけです。



私は、Windows環境で実行しました。

ipconfig -all


もしくは、

netsh interface ip show interface

どちらかをタイプすれば、

インターフェース名を取得できます。


こんな感じです。

InterfaceByName("イーサネット")

と指定してもしっかり取得できます。



IndexからMACアドレスも取得できます。

その場合はIndexByIndex関数を使います。


例えば私の環境では、

netsh interface ip show interfaceより

イーサネットのインデックス番号が14

ということが分かっているので、

IndexByIndex(14)

と書き換えればいいだけです。




以上です。

シンプルに取得できますね。

最後まで読んでいただきありがとうございました。





-プログラミング

Copyright© MasaのITC Life , 2021 All Rights Reserved Powered by STINGER.