There are many tools to implement this, and yeah, this is not the fastest. But the advantage is that you don't need extra tools beyond "bash" and "ping"...
for i in $(seq 1 254); do
if ping -W 1 -c 1 192.168.0.$i; then
HOST[$i]=1
fi
done
echo ${!HOST[@]}
will give you the host addresses for the machines that are live on a given network...