getmac
Version:
Get the MAC address of the current machine you are on.
42 lines (41 loc) • 1.36 kB
JavaScript
// Prepare
import { networkInterfaces } from 'os';
const macRegex = /(?:[a-z0-9]{1,2}[:-]){5}[a-z0-9]{1,2}/i;
const zeroRegex = /(?:[0]{1,2}[:-]){5}[0]{1,2}/;
/**
* Get the first proper MAC address
* @param iface If provided, restrict MAC address fetching to this interface
*/
export default function getMAC(iface) {
const list = networkInterfaces();
if (iface) {
const parts = list[iface];
if (!parts) {
throw new Error(`interface ${iface} was not found`);
}
for (const part of parts) {
if (zeroRegex.test(part.mac) === false) {
return part.mac;
}
}
throw new Error(`interface ${iface} had no valid mac addresses`);
}
else {
for (const [key, parts] of Object.entries(list)) {
// for some reason beyond me, this is needed to satisfy typescript
// fix https://github.com/bevry/getmac/issues/100
if (!parts)
continue;
for (const part of parts) {
if (zeroRegex.test(part.mac) === false) {
return part.mac;
}
}
}
}
throw new Error('failed to get the MAC address');
}
/** Check if the input is a valid MAC address */
export function isMAC(macAddress) {
return macRegex.test(macAddress);
}