What it does
A small Python scanner for the network you are already on. It finds devices, then prints a readable row for each one: IP, hostname, MAC address, vendor, a guessed device type, and open services.
Run it with the wrapper so the virtualenv is picked up for you:
./scan
Pass a subnet when you do not want the default route, skip port checks when you only need who is online, or print JSON when another script should read the result:
./scan --network 192.168.1.0/24 ./scan --no-ports ./scan --json
By default it walks the whole subnet. It tries arp-scan first, then falls back to ping. The local ARP table is optional, because that table only contains hosts this machine has already talked to.