मैं जानना चाहता हूं कि एनओडीई सर्वर के मैक पते (एसएस) को पुनर्प्राप्त करने का कोई तरीका है जिस पर यह चल रहा है।क्या मैं node.js के साथ एक अद्वितीय सर्वर मशीन पहचानकर्ता ला सकता हूं?
उत्तर
इस प्रकार के निम्न स्तर के डेटा तक पहुंचने के लिए नोड में कोई अंतर्निहित नहीं था।
हालांकि, आप ifconfig
निष्पादित कर सकते हैं और इसके आउटपुट को पार्स कर सकते हैं या नोड के लिए सी ++ एक्सटेंशन लिख सकते हैं जो मैक पते को पुनर्प्राप्त करने के लिए एक फ़ंक्शन प्रदान करता है। एक और भी आसान रास्ता /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*
उपकरणों के मैक पतों युक्त देता है। यदि आप सभी उपकरणों को चाहते हैं जिनके पास एक है, भले ही वे उदा। wlan*
कहा जाता है, बस dev.substr(0, 3) == 'eth'
चेक को हटा दें।
ThiefMaster, त्वरित प्रतिक्रिया के लिए धन्यवाद। क्या "/ sys/class/net/eth?/पता" क्रॉस-प्लेटफॉर्म है? – clayperez
सबसे अधिक संभावना लिनक्स-केवल। यह निश्चित रूप से विंडोज़ पर काम नहीं करेगा, बीएसडी जैसे अन्य ओएस के बारे में निश्चित नहीं है। – ThiefMaster
मैं शुरुआत में गेटमैक मॉड्यूल का उपयोग कर रहा था, हालांकि यह पहले डिवाइस से मैक पता वापस लौटाएगा। मेरे मामले में, मुझे wlan0 का मैक पता आवश्यक था, इसलिए wlan0 – Lucas
तुम सिर्फ एक अनूठा सर्वर आईडी के लिए देख रहे हैं, तो आप MongoDB/bson दृष्टिकोण लेने के लिए और सर्वर के होस्ट नाम के MD5 हैश के पहले n बाइट्स इस्तेमाल कर सकते हैं:
var machineHash = crypto.createHash('md5').update(os.hostname()).digest('binary');
इस कोड है node-buffalo से। सही नहीं है, लेकिन आप जो करने की कोशिश कर रहे हैं उसके आधार पर पर्याप्त अच्छा हो सकता है।
मैंने getmac पैकेज की कोशिश की लेकिन यह मेरे लिए काम नहीं करेगा (नोड v0.10, मैक ओएस एक्स) - इसलिए मैंने अपना खुद का सेट और बनाया: https://github.com/scravy/node-macaddress। यह Windows, ओएस एक्स, लिनक्स में काम करता है, और शायद के साथ हर यूनिक्स ifconfig
कमांड लाइन उपकरण का उपयोग कर Node.js कोड है मैक पता प्राप्त करने के लिए :-)
के आउटपुट में मैक पते वापस कर देगा पूरी तरह से काम किया! – Magico
यहाँ:
wlan0 के लिए`$ ifconfig | grep eth0 | awk '{print $5}'`
`$ ifconfig | grep wlan0 | awk '{print $5}'`
Node.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);
`
लेकिन यदि आप वाईफाई मैक पता बंद करते हैं तो शून्य –
का संग्रह होगा, फिर eth0 का उपयोग करें। – JamesNW
सी [इस उत्तर] (HTT को चलाने के लिए "$ नोड getMAC.js" - getMAC.js करने के लिए कोड को बचाने पी: //stackoverflow.com/questions/16386371/get-the-mac-address-of-the-current-machine-with-node-js-using-getmac) एक और सुझाव के लिए। – user3560651
यह पैकेज इसे क्रॉस-प्लेटफ़ॉर्म तरीके से करता है और नोड 0.10-0.12 के साथ-साथ io.js पर भी परीक्षण किया जाता है: https://github.com/scravy/node-macaddress - 'एक() 'विधि देखें। – scravy
इसे आजमाएं: https://www.npmjs.com/package/ee-machine-id – camposer