首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

nodejs 可以发送 arp 请求吗?

  •  
  •   YYSWDD · 145 天前 · 1099 次点击
    这是一个创建于 145 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    13 回复  |  直到 2019-04-28 06:56:55 +08:00
        1
    vampuke   145 天前   ♥ 1
    https://www.npmjs.com/package/local-devices
    不知道你要的是不是这个
        2
    YYSWDD   145 天前
    @vampuke #1 是这样的,但是这个模块,我扫描不到局域网内的设备。
        3
    shiny   145 天前
    @YYSWDD 这个包的原理就是运行 arp 命令,然后解析结果,可以排查下
        4
    Nitroethane   145 天前 via Android   ♥ 1
    用 nodejs 的话估计得用 node 的 addon 机制来写了吧。或者可以装个 arp-scan 这个命令,这个命令挺靠谱的
        5
    ysc3839   145 天前 via Android
    可以调用 libpcap 来发。
        6
    vampuke   145 天前   ♥ 1
    @YYSWDD
    我刚刚试了一下
    我可以扫描到局域网里的所有设备阿
    macos
    可能比较慢?你多等一会儿就扫描完了
        7
    YYSWDD   145 天前
    @vampuke #6 我是 win10 系统。arp 的命令在 cmd 里可以扫描到。
        8
    YYSWDD   145 天前
    @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   145 天前
    @YYSWDD #8 "First you need to install arp-scan if is not already installed." 你不看文档的吗......
        10
    YYSWDD   145 天前
    @Nitroethane #9 还要装外部命令,我以为 npm 安装了就行呢。那我打包给别人的时候,别人也要装这个,太麻烦了。
        11
    Srar   145 天前
    可以, https://www.npmjs.com/package/raw-socket 然后配合 nexe 或者 pkg 打包
        12
    julyclyde   145 天前
    你想多了
    这种远离底层的语言就不是用来做这么底层的事的
    但凡能做出来,都很难是跨平台的
        13
    nimrc   144 天前 via iPhone
    写扩展吧
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4200 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 02:18 · PVG 10:18 · LAX 19:18 · JFK 22:18
    ♥ Do have faith in what you're doing.