GNU/Linux >> Linux の 問題 >  >> Linux

Linux Ping:タイムアウトを表示

私が見つけた最良の方法は、-O フラグを使用することでした (すべてのディストリビューションで機能するわけではないことに注意してください - 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

マニュアルページから:

-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 はうまくいきませんでした... 私の場合、ほとんどの場合、これを見たいのは基本的にサーバーの再起動中です... これは Windows ではうまく機能します...

私は簡単なスクリプト (@entropo の回答を拡張) を作成して、この質問への回答に役立つ可能性があります:

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

使い方は次のようなものです:


シェル スクリプトでホストが起動しているかどうかを確認するために ping を使用するときは、次のようにします。

ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up

基本的に、出力なしで 1 秒でタイムアウトする 1 つの ICMP を送信し、終了コードを使用してさらなるアクションを制御します。


Linux
  1. Linux での ping コマンドの例

  2. Linux での uptime コマンドの例

  3. Linux ls コマンドでタイムスタンプの秒を表示する方法

  1. Linuxをより速く起動する

  2. Linux の孤立したプロセスを見つける

  3. Linux 時間コマンドの例

  1. Linuxタイムコマンド

  2. Linux での timedatectl コマンドの例

  3. Linux プロセスの状態