electron如何获取网卡物理地址?

本文转载自:https://newsn.net/

electron程序,如何才能获得网卡物理地址呢?”经常有新人这么提问,苏南大叔是这么建议大家的,请换个角度来考虑问题。electron是基于node的,那么node如何获得网卡的物理地址呢?这个问题是不是就变得可信多了。大家要学会思考问题,而不是老做伸手党,对吧?

electron程序,如何获取网卡物理地址?

本文测试环境:mac。本文仅涉及到获取网卡物理地址,暂时不涉及获取别的硬件信息,请知悉。

下载安装

苏南大叔在本篇文章中,使用了一个第三方代码库,叫做getmac。其github主页地址是:

electron程序,如何获取网卡物理地址?

通过npm在项目根目录下面安装,最方便省力。注意:是项目根目录下执行下面的命令。

npm install --save getmac

安装完成后,就可以在项目根目录下面的package.json里面,使用下面的命令了。不过很不常用,仅仅提供参考。

getmac-node

当然,因为并不是全局安装的结果,您更可能需要在项目根目录下面执行下面的命令:

./node_modules/.bin/getmac-node

electron程序,如何获取网卡物理地址?

在代码中使用

因为苏南大叔的测试机是mac,这里就先用大家已知的命令查看一下结果。

ifconfig

electron程序,如何获取网卡物理地址?

electron程序,如何获取网卡物理地址?

从截图中可以发现:可预期的网卡物理地址有很多个。

以下的是在node代码中使用的范例,当然您也可以理解为在electron主进程中使用的范例:

electron程序,如何获取网卡物理地址?

获取物理地址(推荐)

require('getmac').getMac(function(err, macAddress){

if (err) throw err

console.log(macAddress)

})

这个就是大家千呼万唤的获取网卡物理地址功能,代码里面的throw err,大家请注意慎重处理错误的情况。而对于macaddress,多个网卡的时候,也只是返回一条网卡数据的。在苏南大叔的测试中,返回的是ifconfig的最后一条数据中的网卡地址。

获取特定网卡物理地址

require('getmac').getMac({iface: 'eth0'}, function(err, macAddress){

if (err) throw err

console.log(macAddress)

})

这条语句就是针对多个网卡可用的时候,获取指定网卡物理地址的方式,其中eth0就是网卡的编号,大家可以使用ifconfig或者ipconfig命令来获得可用的网卡名称。

值得注意的是:eth0这个网卡,可不是所有的电脑上面都有的。所以,这里throw err的概率是很大的。

判断物理地址是否正确

if ( require('getmac').isMac("e4:ce:8f:5b:a7:fc") ) {

console.log('valid mac')

}

else {

console.log('invalid mac')

}

这个isMac,是说对后面传递进来的参数进行检测。就类似于常见的isIp函数,检测格式而已。不要多想,就仅仅是检测格式,一个很没有啥用途的功能。

基本原理

苏南大叔从从下面的代码中,看到了getMac函数的定义。就可以看到作者的思路了。文件是:

/source/index.coffee

里面可以找到一句:

command = if isWindows then "%SystemRoot%/System32/getmac.exe" else "/sbin/ifconfig -a || /sbin/ip link"

所以,这个代码的基本原理就是执行ifconfig,然后再进行正则匹配获得数据的。

electron程序,如何获取网卡物理地址?

总结

electron程序,既然大家都来了,就一定要有思考能力地取学习。

以上是 electron如何获取网卡物理地址? 的全部内容, 来源链接: utcz.com/a/118691.html

回到顶部