11

NODE が実行されているサーバーの MAC アドレスを取得する方法があるかどうかを知りたいです。

4

5 に答える 5

7

ノードには、この種の低レベル データにアクセスするためのビルトインはありません。

ただし、その出力を実行ifconfigして解析するか、MAC アドレスを取得する関数を提供する node の C++ 拡張機能を作成することができます。さらに簡単な方法は読むこと/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());

eth*この関数は、すべてのデバイスの MAC アドレスを含むオブジェクトを返します。すべてのデバイスが必要な場合は、たとえば という名前であってもwlan*dev.substr(0, 3) == 'eth'チェックを外します。

于 2012-06-23T21:16:21.023 に答える
4

一意のサーバー ID を探しているだけの場合は、mongodb/bson アプローチを使用して、サーバーのホスト名の md5 ハッシュの最初の n バイトを使用できます。

var machineHash = crypto.createHash('md5').update(os.hostname()).digest('binary');

このコードはnode-buffaloからのものです。完璧ではありませんが、何をしようとしているのかによっては十分かもしれません。

于 2012-06-23T22:44:24.943 に答える
2

getmacパッケージを試してみましたが、うまくいきませんでした (ノード v0.10、Mac OS X ) Windows、OS X、Linux、およびおそらくすべての UNIX で動作しますifconfig:-)

于 2015-03-30T19:27:35.737 に答える
0

コマンド ライン ツールを使用して MAC アドレスを取得する node.js コードを次に示します。

`$ ifconfig | grep eth0 | awk '{print $5}'`

wlan0 の場合

`$ ifconfig | grep wlan0 | awk '{print $5}'`

node.js では、これを使用します - コードを getMAC.js に保存します - 「$ node getMAC.js」を実行します

`// Get MAC address - $ ifconfig | grep wlan0 | awk '{print $5}'
 var exec = require('child_process').exec;
 function puts(error, stdout, stderr) { console.log(stdout) }
 exec("ifconfig | grep wlan0 | awk '{print $5}'", puts);
 `
于 2015-11-09T20:09:41.227 に答える