If you want to quickly ping every address on a local network to see which are up machines: ```bash localnet=0 # e.g. 1 if your ips are 192.168.1.x for s in $(seq 1 254); do ( # -w1 means 1 second deadline # -c1 means only one ping ping -w1 -c1 "192.168.$localnet.$s" 2>&1 >| "$s" )& # & so pings are run in parallel done ``` The `&` means all the pings will run in parallel. Do this in an empty directory in `/tmp`, e.g. `/tmp/x12`, then you will have a bunch of files. Then up machines reply, so you can ``` grep from * ``` whereupon you get ``` 1:64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=17.2 ms 2:64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=257 ms 31:64 bytes from 192.168.1.31: icmp_seq=1 ttl=64 time=0.048 ms 37:64 bytes from 192.168.1.37: icmp_seq=1 ttl=64 time=942 ms 83:64 bytes from 192.168.1.83: icmp_seq=1 ttl=64 time=406 ms ``` which gives you the ip addresses of up machines on your LAN. ## My current script ```bash #!/bin/bash localnet="${localnet-1}" for s in $(seq 1 254); do ( # -w1 means 1 second deadline # -c1 means only one ping ping -w1 -c1 "192.168.$localnet.$s" # 2>&1 >| "$s" )& # & so pings are run in parallel done ``` so that I can do ``` massping 2>&1 | grep from ```