
クロスプラットフォームのNode.jsライブラリで、Linux、macOS、Windows上でネットワークインターフェースごとにMACアドレスを取得する、非同期・同期APIを備えたものです。
Linux、OS X、Windows で MAC アドレスを取得します。
MAC アドレスに関するよくある誤解は、すべての ホスト が 1 つ の MAC アドレスを持っているというものですが、実際にはホストが 複数の MAC アドレスを持つ可能性があります。なぜなら、すべてのネットワークインターフェース が独自の MAC アドレスを持つ可能性があるからです。
このライブラリは、ネットワークインターフェースごとに MAC アドレスを検出し、ホストシステムを識別する 1 つ の MAC アドレスだけが必要な場合に適切なインターフェースを選択します(以下の API + 例 を参照)。
特徴:
Linux、Mac OS X、Windows、およびほとんどの UNIX システムで動作します。node ≥ 0.12 および io.js は os.networkInterfaces() で MAC アドレスを報告します。このライブラリは利用可能な場合にこの情報を活用します。os.networkInterfaces() の適切な代替も提供します(以下の API + 例 を参照)。npm install --save macaddress
var macaddress = require('macaddress');
(非同期) .one(iface, callback) → string
(非同期) .one(callback) → string
(非同期) .all(callback) → { iface: { type: address } }
(同期) .networkInterfaces() → { iface: { type: address } }
.one([iface], callback)指定された iface の MAC アドレスを取得します。
iface が省略された場合、この関数は自動的に適切なデバイスを選択します(例: Linux では eth0、OS X では en0 など)。
iface パラメータなし:
macaddress.one(function (err, mac) {
console.log("Mac address for this host: %s", mac);
});
→ このホストの MAC アドレス: ab:42:de:13:ef:37
iface パラメータあり:
macaddress.one('awdl0', function (err, mac) {
console.log("Mac address for awdl0: %s", mac);
});
→ awdl0 の MAC アドレス: ab:cd:ef:34:12:56
.all(callback)すべての非内部インターフェースの MAC アドレスを取得します。
macaddress.all(function (err, all) {
console.log(JSON.stringify(all, null, 2));
});
{
"en0": {
"ipv6": "fe80::cae0:ebff:fe14:1da9",
"ipv4": "192.168.178.20",
"mac": "ab:42:de:13:ef:37"
},
"awdl0": {
"ipv6": "fe80::58b9:daff:fea9:23a9",
"mac": "ab:cd:ef:34:12:56"
}
}
.networkInterfaces()os.networkInterfaces() の便利な代替です。非内部インターフェースのみを報告します。
console.log(JSON.stringify(macaddress.networkInterfaces(), null, 2));
{
"en0": {
"ipv6": "fe80::cae0:ebff:fe14:1dab",
"ipv4": "192.168.178.22"
},
"awdl0": {
"ipv6": "fe80::58b9:daff:fea9:23a9"
}
}