在 Linux、OS X 和 Windows 中获取 MAC 地址。
关于 MAC 地址的一个常见误解是,每台主机只有一个 MAC 地址,而一台主机可能有多个 MAC 地址——因为每个网络接口都可能拥有自己的 MAC 地址。
该库可以按网络接口发现 MAC 地址,并且如果你只关注用于标识主机系统的一个 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');
(async) .one(iface, callback) → string
(async) .one(callback) → string
(async) .all(callback) → { iface: { type: address } }
(sync) .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 address for this host: ab:42:de:13:ef:37
带 iface 参数:
macaddress.one('awdl0', function (err, mac) {
console.log("Mac address for awdl0: %s", mac);
});
→ Mac address for awdl0: 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"
}
}