Как получить mac-адрес системы Linux и Unix с помощью Nodejs

#node.js

#node.js

Вопрос:

 lib.mac = function () {
var macAddress = undefined;
Object.keys(ifaces).forEach(function (ifname) {
    var alias = 0;
    ifaces[ifname].forEach(function (iface) {
        if ('IPv4' !== iface.family || iface.internal != false) {
            // skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
            return;
        }
        if (alias >= 1) {
            // this single interface has multiple ipv4 addresses
            macAddress = iface.mac;
        } else {
            // this interface has only one ipv4 adress
            macAddress = iface.mac;
        }
          alias;
    });
});
return macAddress;
  

}

Выше приведен мой код для системы Windows, и я не знаю, как получить mac-адрес для системы Linux и Unix.

Ответ №1:

Если вы не хотите использовать сторонний сервис, вы можете использовать os module

 require("os").networkInterfaces()

{ lo:
   [ { address: '127.0.0.1',
       netmask: '255.0.0.0',
       family: 'IPv4',
       mac: '00:00:00:00:00:00',
       internal: true,
       cidr: '127.0.0.1/8' },
     { address: '::1',
       netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 0,
       internal: true,
       cidr: '::1/128' } ],
  enp0s31f6:
   [ { address: '172.22.100.113',
       netmask: '255.255.255.0',
       family: 'IPv4',
       mac: '8c:16:45:f0:8f:51',
       internal: false,
       cidr: '172.22.100.113/24' },
     { address: 'fe80:fe23:adaa:583d:123c',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '8c:16:45:f0:8f:51',
       scopeid: 2,
       internal: false,
       cidr: 'fe80::4dd7:aeee:583d:7c7c/64' } ],
...
  

Комментарии:

1. Работает ли этот код для каждой ОС (в том числе для Linux и Unix)

2. Именно я запускаю его из Ubuntu Linux, дистрибутив

Ответ №2:

Вы можете использовать эту библиотеку getmac.

Например.:

 // Fetch the computer's mac address
require('getmac').getMac(function(err, macAddress){
    if (err)  throw err
    console.log(macAddress)
});
  

Или просто с помощью os модуля:

 require("os").networkInterfaces();

{ lo:
   [ { address: '127.0.0.1',
       netmask: '255.0.0.0',
       family: 'IPv4',
       mac: '00:00:00:00:00:00',
       internal: true,
       cidr: '127.0.0.1/8' },
     { address: '::1',
       netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
       family: 'IPv6',
       mac: '00:00:00:00:00:00',
       scopeid: 0,
       internal: true,
       cidr: '::1/128' } ],
  enp2s0:
   [ { address: '192.168.1.10',
       netmask: '255.255.254.0',
       family: 'IPv4',
       mac: '94:de:80:f0:ef:ef',
       internal: false,
       cidr: '192.168.4.144/23' },
     { address: 'fe80::ca45:44ac:89f4:85',
       netmask: 'ffff:ffff:ffff:ffff::',
       family: 'IPv6',
       mac: '94:de:80:f0:ef:ef',
       scopeid: 2,
       internal: false,
       cidr: 'fe80::ca45:44ac:89f4:85/64' }
   ],
}
  

https://nodejs.org/api/os.html#os_os_networkinterfaces

https://www.npmjs.com/package/getmac

Надеюсь, это поможет!

Комментарии:

1. Я не хочу использовать какую-либо библиотеку, я хочу написать свой собственный код

2. ОК. Вы можете использовать os модуль.