
You can use a combination of arpping and icmp ping, or in fact tcp ping, to gather what the failure is.

You may want to look at arp ping tool if all your hosts are on the physical LAN.It does the same thing but uses layer 2 arp packets to do the 'ping'.
#SET PING CONSOLE UPDATE#
On Debian Lenny, installation is trivial: aptitude update I accepted the fping solution (thanks for all the other answers). This is why I do not want to scan all the subnet (with a ping -b for example). They are on the same vlan and subnet as the users (for simplicity of deployment and replacement).

I checked man ping, there seem to be two options to set the timeout delay: -w deadline and -W timeout. Unfortunately, when a host is offline, the ping takes a long time to timeout. So, my script launches a single ping for each host: ping -c 1 10.0.0.1

I have the DHCP leases file, so I have all the IPs (say, 10.0.0.1, 10.0.0.2, etc.), all I need is the ping status for each host. I am trying to write a script that lists all the hosts on my LAN (there a about 20 of them) and writes the ping status next to each host.
