我想实现一个功能,扫描出局域网内的所有设备,获得 ip,mac 地址,设备名称。
我知道 nodejs 可以直接调用系统命令。
但是考虑到,可能编译成跨平台的应用,想调用 node 自身的模块。
或者可不可自己用 js 写一个通过 arp 协议发送的请求?是否已有实现?
1
vampuke 2019-04-26 15:02:14 +08:00 1
https://www.npmjs.com/package/local-devices
不知道你要的是不是这个 |
4
Nitroethane 2019-04-26 15:21:01 +08:00 via Android 1
用 nodejs 的话估计得用 node 的 addon 机制来写了吧。或者可以装个 arp-scan 这个命令,这个命令挺靠谱的
|
5
ysc3839 2019-04-26 15:25:06 +08:00 via Android
可以调用 libpcap 来发。
|
8
YYSWDD OP @Nitroethane #4 我用 npm 安装了 arp-scan.运行 arpscan -C 的时候报错
{ Error: spawn arp-scan ENOENT at Process.ChildProcess._handle.onexit (internal/child_process.js:240:19) at onErrorNT (internal/child_process.js:415:16) at process._tickCallback (internal/process/next_tick.js:63:19) at Function.Module.runMain (internal/modules/cjs/loader.js:757:11) at startup (internal/bootstrap/node.js:283:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3) errno: 'ENOENT', code: 'ENOENT', syscall: 'spawn arp-scan', path: 'arp-scan', spawnargs: [ '-l' ] } Error: spawn arp-scan ENOENT |
9
Nitroethane 2019-04-26 16:09:00 +08:00
@YYSWDD #8 "First you need to install arp-scan if is not already installed." 你不看文档的吗......
|
10
YYSWDD OP @Nitroethane #9 还要装外部命令,我以为 npm 安装了就行呢。那我打包给别人的时候,别人也要装这个,太麻烦了。
|
11
Srar 2019-04-26 16:29:01 +08:00
可以, https://www.npmjs.com/package/raw-socket 然后配合 nexe 或者 pkg 打包
|
12
julyclyde 2019-04-27 10:14:26 +08:00
你想多了
这种远离底层的语言就不是用来做这么底层的事的 但凡能做出来,都很难是跨平台的 |
13
nimrc 2019-04-28 06:56:55 +08:00 via iPhone
写扩展吧
|