我想实现一个功能,扫描出局域网内的所有设备,获得 ip,mac 地址,设备名称。
我知道 nodejs 可以直接调用系统命令。
但是考虑到,可能编译成跨平台的应用,想调用 node 自身的模块。
或者可不可自己用 js 写一个通过 arp 协议发送的请求?是否已有实现?
1 vampuke 2019-04-26 15:02:14 +08:00 ![]() https://www.npmjs.com/package/local-devices 不知道你要的是不是这个 |
![]() | 4 Nitroethane 2019-04-26 15:21:01 +08:00 via Android ![]() 用 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 写扩展吧 |