125 lines
2.7 KiB
Markdown
125 lines
2.7 KiB
Markdown
node-macaddress
|
||
===============
|
||
|
||
[](https://travis-ci.org/scravy/node-macaddress)
|
||
|
||
Retrieve MAC addresses in Linux, OS X, and Windows.
|
||
|
||
A common misconception about MAC addresses is that every *host* had *one* MAC address,
|
||
while a host may have *multiple* MAC addresses – since *every network interface* may
|
||
have its own MAC address.
|
||
|
||
This library allows to discover the MAC address per network interface and chooses
|
||
an appropriate interface if all you're interested in is *one* MAC address identifying
|
||
the host system (see `API + Examples` below).
|
||
|
||
**Features:**
|
||
|
||
+ works on `Linux`, `Mac OS X`, `Windows`, and on most `UNIX` systems.
|
||
+ `node ≥ 0.12` and `io.js` report MAC addresses in `os.networkInterfaces()`
|
||
this library utilizes this information when available.
|
||
+ also features a sane replacement for `os.networkInterfaces()`
|
||
(see `API + Examples` below).
|
||
+ works with stoneage node versions ≥ v0.8 (...)
|
||
|
||
Usage
|
||
-----
|
||
|
||
```
|
||
npm install --save macaddress
|
||
```
|
||
|
||
```JavaScript
|
||
var macaddress = require('macaddress');
|
||
```
|
||
|
||
API + Examples
|
||
--------------
|
||
|
||
(async) .one(iface, callback) → string
|
||
(async) .one(callback) → string
|
||
(async) .all(callback) → { iface: { type: address } }
|
||
(sync) .networkInterfaces() → { iface: { type: address } }
|
||
|
||
---
|
||
|
||
### `.one([iface], callback)`
|
||
|
||
Retrieves the MAC address of the given `iface`.
|
||
|
||
If `iface` is omitted, this function automatically chooses an
|
||
appropriate device (e.g. `eth0` in Linux, `en0` in OS X, etc.).
|
||
|
||
**Without `iface` parameter:**
|
||
|
||
```JavaScript
|
||
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
|
||
```
|
||
|
||
**With `iface` parameter:**
|
||
|
||
```JavaScript
|
||
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)`
|
||
|
||
Retrieves the MAC addresses for all non-internal interfaces.
|
||
|
||
```JavaScript
|
||
macaddress.all(function (err, all) {
|
||
console.log(JSON.stringify(all, null, 2));
|
||
});
|
||
```
|
||
|
||
```JavaScript
|
||
{
|
||
"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()`
|
||
|
||
A useful replacement of `os.networkInterfaces()`. Reports only non-internal interfaces.
|
||
|
||
```JavaScript
|
||
console.log(JSON.stringify(macaddress.networkInterfaces(), null, 2));
|
||
```
|
||
|
||
```JavaScript
|
||
{
|
||
"en0": {
|
||
"ipv6": "fe80::cae0:ebff:fe14:1dab",
|
||
"ipv4": "192.168.178.22"
|
||
},
|
||
"awdl0": {
|
||
"ipv6": "fe80::58b9:daff:fea9:23a9"
|
||
}
|
||
}
|
||
```
|
||
|