NODE が実行されているサーバーの MAC アドレスを取得する方法があるかどうかを知りたいです。
5 に答える
ノードには、この種の低レベル データにアクセスするためのビルトインはありません。
ただし、その出力を実行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'
チェックを外します。
一意のサーバー ID を探しているだけの場合は、mongodb/bson アプローチを使用して、サーバーのホスト名の md5 ハッシュの最初の n バイトを使用できます。
var machineHash = crypto.createHash('md5').update(os.hostname()).digest('binary');
このコードはnode-buffaloからのものです。完璧ではありませんが、何をしようとしているのかによっては十分かもしれません。
コマンド ライン ツールを使用して 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);
`