nodejs 可以发送 arp 请求吗?

2019-04-26 14:54:32 +08:00
 YYSWDD

我想实现一个功能,扫描出局域网内的所有设备,获得 ip,mac 地址,设备名称。

我知道 nodejs 可以直接调用系统命令。

但是考虑到,可能编译成跨平台的应用,想调用 node 自身的模块。

或者可不可自己用 js 写一个通过 arp 协议发送的请求?是否已有实现?

2773 次点击
所在节点    问与答
13 条回复
vampuke
2019-04-26 15:02:14 +08:00
https://www.npmjs.com/package/local-devices
不知道你要的是不是这个
YYSWDD
2019-04-26 15:14:51 +08:00
@vampuke #1 是这样的,但是这个模块,我扫描不到局域网内的设备。
shiny
2019-04-26 15:18:46 +08:00
@YYSWDD 这个包的原理就是运行 arp 命令,然后解析结果,可以排查下
Nitroethane
2019-04-26 15:21:01 +08:00
用 nodejs 的话估计得用 node 的 addon 机制来写了吧。或者可以装个 arp-scan 这个命令,这个命令挺靠谱的
ysc3839
2019-04-26 15:25:06 +08:00
可以调用 libpcap 来发。
vampuke
2019-04-26 15:28:28 +08:00
@YYSWDD
我刚刚试了一下
我可以扫描到局域网里的所有设备阿
macos
可能比较慢?你多等一会儿就扫描完了
YYSWDD
2019-04-26 15:58:02 +08:00
@vampuke #6 我是 win10 系统。arp 的命令在 cmd 里可以扫描到。
YYSWDD
2019-04-26 16:04:46 +08:00
@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
Nitroethane
2019-04-26 16:09:00 +08:00
@YYSWDD #8 "First you need to install arp-scan if is not already installed." 你不看文档的吗......
YYSWDD
2019-04-26 16:19:03 +08:00
@Nitroethane #9 还要装外部命令,我以为 npm 安装了就行呢。那我打包给别人的时候,别人也要装这个,太麻烦了。
Srar
2019-04-26 16:29:01 +08:00
可以, https://www.npmjs.com/package/raw-socket 然后配合 nexe 或者 pkg 打包
julyclyde
2019-04-27 10:14:26 +08:00
你想多了
这种远离底层的语言就不是用来做这么底层的事的
但凡能做出来,都很难是跨平台的
nimrc
2019-04-28 06:56:55 +08:00
写扩展吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/558956

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX