Das Beste, was ich gefunden habe, war die Verwendung des Flags -O (Beachten Sie, dass es nicht auf allen Distributionen funktioniert - mit Linux Mint 17.1 Rebecca IPUTILS-PING 3:20121221-4ubuntu1.1)
$ ping -O 10.10.5.1
64 bytes from 10.10.5.1: icmp_seq=53 ttl=245 time=460 ms
no answer yet for icmp_seq=54
64 bytes from 10.10.5.1: icmp_seq=55 ttl=245 time=265 ms
64 bytes from 10.10.5.1: icmp_seq=56 ttl=245 time=480 ms
no answer yet for icmp_seq=57
64 bytes from 10.10.5.1: icmp_seq=58 ttl=245 time=348 ms
64 bytes from 10.10.5.1: icmp_seq=59 ttl=245 time=515 ms
no answer yet for icmp_seq=60
64 bytes from 10.10.5.1: icmp_seq=61 ttl=245 time=320 ms
64 bytes from 10.10.5.1: icmp_seq=62 ttl=245 time=537 ms
Aus der Manpage:
-O Report outstanding ICMP ECHO reply before sending next packet.
This is useful together with the timestamp -D to log output to a
diagnostic file and search for missing answers.
fping hat bei mir nicht funktioniert ... In meinem Fall möchte ich die meiste Zeit sehen, dass dies im Grunde während des Neustarts des Servers geschieht ... das funktioniert ziemlich gut unter Windows ...
Ich erstelle ein einfaches Skript (erweitert @entropo answer), um mir dabei zu helfen, was bei der Beantwortung dieser Frage helfen kann:
https://gist.github.com/brunobraga/7259197
#!/bin/bash
host=$1
if [ -z $host ]; then
echo "Usage: `basename $0` [HOST]"
exit 1
fi
while :; do
result=`ping -W 1 -c 1 $host | grep 'bytes from '`
if [ $? -gt 0 ]; then
echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $host is \033[0;31mdown\033[0m"
else
echo -e "`date +'%Y/%m/%d %H:%M:%S'` - host $host is \033[0;32mok\033[0m -`echo $result | cut -d ':' -f 2`"
sleep 1 # avoid ping rain
fi
done
Und die Verwendung ist so etwas wie:
Wenn ich Ping verwende, um in Shell-Skripten zu sehen, ob ein Host aktiv ist, mache ich so etwas:
ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up
Sendet im Wesentlichen einen ICMP, der in einer Sekunde ohne Ausgabe abläuft, und verwendet den Exit-Code, um weitere Aktionen zu steuern.