Scan LAN/Subnet for devices

Scan LAN/Subnet for devices

This simple flow uses nmap to scan for devices in a subnet.


Edit the scan subnet and change your the network subnet with your network ip. By default the value is

The command to execute (Linux tested) requires nmap installed on machine running node-red.

sudo nmap -sn | awk '/Nmap scan report for/{printf $5;}/MAC Address:/{print "|"substr($0, index($0,$3)) }' | sort


The flow has an inject node (runs every minute) that trigger the networks scan.


Please pay attention that the response time of the scan depends on the size of your network (how many devices attached).

I added a parser for the scan result that transform data to an array of objects


      ip: 'device_ip',
      mac: 'device_mac_address,
      brand: 'device_brand'
[{"id":"c3961d41.0f858","type":"tab","label":"Scan Subnet for Devices","disabled":false,"info":""},{"id":"842fa7ed.314678","type":"inject","z":"c3961d41.0f858","name":"","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":true,"onceDelay":0.1,"x":150,"y":60,"wires":[["c43bcf07.4070d"]]},{"id":"c43bcf07.4070d","type":"exec","z":"c3961d41.0f858","command":"sudo nmap -sn | awk '/Nmap scan report for/{printf $5;}/MAC Address:/{print \"|\"substr($0, index($0,$3)) }' | sort","addpay":false,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"scan subnet","x":370,"y":60,"wires":[["6903a852.c6bd58"],[],[]]},{"id":"6903a852.c6bd58","type":"function","z":"c3961d41.0f858","name":"Subnet Devices Array","func":"let response = msg.payload.split('\\n');\nlet found = []\nlet device\nresponse.forEach ( line => {\n    if ( line.indexOf('|') > -1 ){\n        device = {\n            ip : line.split('|')[0],\n            mac: line.split('|')[1].split(' ')[0],\n            brand: line.split('|')[1].split(' ')[1]\n        }\n        found.push ( device )\n    }\n})\nmsg.payload = found;\nreturn msg;","outputs":1,"noerr":0,"x":600,"y":60,"wires":[["c5c606d2.36a7f8"]]},{"id":"c5c606d2.36a7f8","type":"debug","z":"c3961d41.0f858","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":850,"y":60,"wires":[]}]

Flow Info

Created 2 years, 8 months ago
Rating: not yet rated




Node Types

  • debug (x1)
  • exec (x1)
  • function (x1)
  • inject (x1)
  • tab (x1)


  • network
  • nmap
  • discovery
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option