Hal terbaik yang saya temukan adalah menggunakan flag -O (Perhatikan bahwa ini tidak berfungsi di semua distro - menggunakan 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
Dari halaman manual:
-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 tidak bekerja untuk saya... Dalam kasus saya, sebagian besar waktu saya ingin melihat ini pada dasarnya selama reboot server... ini bekerja cukup bagus di Windows...
Saya membuat skrip sederhana (memperluas jawaban @entropo) untuk membantu saya dalam hal itu, yang dapat membantu menjawab pertanyaan ini:
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
Dan penggunaannya adalah seperti:
Saat saya menggunakan ping untuk melihat apakah sebuah host aktif dalam skrip shell, saya melakukan sesuatu seperti ini:
ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up
Pada dasarnya, kirim satu ICMP yang waktu habis dalam satu detik tanpa keluaran dan gunakan kode keluar untuk membatasi tindakan lebih lanjut.