Files

125 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

node-macaddress
===============
[![Build Status](https://travis-ci.org/scravy/node-macaddress.svg?branch=master)](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"
}
}
```