#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
модуль.