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

nodejs 可以发送 arp 请求吗?

  •  
  •   YYSWDD · 2019-04-26 14:54:32 +08:00 · 2946 次点击
    这是一个创建于 2020 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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