lanscanner

Small network utility for scanning your LAN for devices or in-use ip addresses

Usage no npm install needed!

<script type="module">
  import lanscanner from 'https://cdn.skypack.dev/lanscanner';
</script>

README

Downloads MIT license

LAN Scanner

LAN Scanner is a small network utility for scanning your LAN for in use MAC/IP addresses. Behind the scenes LAN Scanner makes use of the native arp utility to resolve these MAC/IP addresses.

Installation

npm install --save lanscanner

Basic usage

const LANScanner = require('lanscanner')
LANScanner.scan()
  .then((result) => {
    console.log(result)
    // [
    //   { ip: '192.168.0.22', mac: 'ac:87:a3:2b:e2:ca' },
    //   { ip: '192.168.0.24', mac: 'ac:87:a3:2b:e2:ca' }
    // ]
  })

Documentation

.scan()

Scans your local area network to retrieve a list of in use IP and/or MAC addresses. Returns an object containing a list of IP and/or MAC addresses after the Promise has been fulfilled.

LANScanner.scan()
  .then((result) => {
    console.log(result)
    // [
    //   { ip: '192.168.0.22', mac: 'ac:87:a3:2b:e2:ca' },
    //   { ip: '192.168.0.24', mac: 'ac:87:a3:2b:e2:ca' }
    // ]
  })

If you just want to retrieve a list of in use ip addresses or mac address you can give this function an argument.

LANScanner.scan('ip')
    .then((result) => {
        console.log(result)
        // ['192.168.0.22', '192.168.0.24']
    })

LANScanner.scan('mac')
    .then((result) => {
        console.log(result)
        // ['ac:87:a3:2b:e2:ca', 'ac:87:a3:2b:e2:ca']
    })

Note If you use an argument in the .scan() function you will automatically only get unique values back. This is disabled for when you scan for both IP and MAC addresses. So .scan() without an argument could have duplicate IP and/or MAC address because one MAC address might have 2 IP addresses.

.getInternalIP()

Gets the internal ip address of the current machine.

const internalIP = LANScanner.getInternalIP()
console.log(internalIP) // '192.168.0.22'

.arp()

Executes the arp -a command and will return the raw result as a string after the Promise has been fulfilled.

LANScanner.arp()
  .then((result) => {
    // Example output:
    // ? (192.168.0.22) at ac:87:a3:2b:e2:ca on en0 ifscope [ethernet]
    // ? (192.168.0.22) at ac:87:a3:2b:e2:ca on en1 ifscope [ethernet]
    // ? (192.168.0.24) at c8:3c:85:34:7f:be on en0 ifscope [ethernet]
    // ? (192.168.0.24) at c8:3c:85:34:7f:be on en1 ifscope [ethernet]
  })

.mdns()

Returns a list of all possible ip addresses within the local area networks base ips found within the arp table.

LANScanner.mdns()
  .then(ips => {
      console.log(ips)
      // ['192.168.0.1', ..., '192.168.0.255', '192.168.1.1', ..., '192.168.1.255']
  })