我可以使用node.js获取唯一的服务器机器标识符吗?

cla*_*rez 11 mac-address node.js

我想知道是否有一种方法让NODE检索运行它的服务器的MAC地址.

Thi*_*ter 7

Node没有内置访问这种低级数据.

但是,您可以执行ifconfig并解析其输出或为节点编写C++扩展,该节点提供检索mac地址的函数.更简单的方法是阅读/sys/class/net/eth?/address:

var fs = require('fs'),
    path = require('path');
function getMACAddresses() {
    var macs = {}
    var devs = fs.readdirSync('/sys/class/net/');
    devs.forEach(function(dev) {
        var fn = path.join('/sys/class/net', dev, 'address');
        if(dev.substr(0, 3) == 'eth' && fs.existsSync(fn)) {
            macs[dev] = fs.readFileSync(fn).toString().trim();
        }
    });
    return macs;
}

console.log(getMACAddresses());
Run Code Online (Sandbox Code Playgroud)

该函数返回一个包含所有eth*设备的mac地址的对象.如果您希望所有具有一个设备的设备(即使它们被称为)wlan*,只需取消dev.substr(0, 3) == 'eth'检查即可.