web-dev-qa-db-ja.com

失敗したpingを表示する方法は?

Windows pingを使用している場合、失敗したpingが表示されます。 Ubuntuには同様の機能がありますか?

Pingの失敗は、ネットワークのデバッグ時に非常に役立ちます。どうやってこれを解決しますか?まあ、私は単純な解決策が欲しいだけで、長いスクリプトを取得したくありません。

24
王子1986

すべての答えをありがとう。最新のubuntu pingはpingが失敗したことを示すことができるようです。

再度、感謝します。

0
王子1986

正しい答えは次のとおりです。「失敗した 「pingを失いました。」(「宛先に到達できません」などの失敗応答は常に出力されます。これは、応答がないこととは異なります。)

Pingユーティリティは、この特定のpingが失われたと判断した場合でも、受信したすべての応答を出力します。順不同で返信を受け取ることは完全に可能です。

Android電話でも、ストックpingユーティリティは次の2つのオプションをサポートしています。
-Dすべてのメッセージの前にタイムスタンプを出力します
-O返信が間に合わない場合にメッセージを出力しますそして、それは多かれ少なかれ尋ねられたものです
ただし、これらのオプションはどこでもサポートされていないようです(たとえば、Debian Wheezyには、Jessieにはありますが、busybox pingはサポートしていません)。

ここに、私が取得できた出力の例を示します(重要でないping応答はスキップされました)。

u0_a93@NX505J:/ $ ping -D -O 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1440545014.805478] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=244 time=116 ms
~~~~~~~~~~
[1440545142.995443] 64 bytes from 8.8.8.8: icmp_seq=129 ttl=244 time=110 ms
[1440545144.885601] no answer yet for icmp_seq=130
[1440545145.455485] 64 bytes from 8.8.8.8: icmp_seq=131 ttl=244 time=568 ms
[1440545145.455780] 64 bytes from 8.8.8.8: icmp_seq=130 ttl=244 time=1569 ms
[1440545146.005850] 64 bytes from 8.8.8.8: icmp_seq=132 ttl=244 time=119 ms
~~~~~~~~~~
[1440545254.055962] 64 bytes from 8.8.8.8: icmp_seq=240 ttl=244 time=115 ms
^C
--- 8.8.8.8 ping statistics ---
240 packets transmitted, 240 received, 0% packet loss, time 239250ms
rtt min/avg/max/mdev = 109.062/138.757/1569.620/101.608 ms, pipe 2

#130が最初に欠落していると報告され、次にafter#131が受信され、最後にパケット損失がゼロと報告されることに注意してください。


Windowsに関する追加のメモ:

Windowsでは、pingは応答をより長く待ってから欠落していると宣言し、後で来る場合は無視するようです。

デフォルトでは、間隔は1秒、タイムアウトは4秒です。したがって、
RTTが低い場合、pingは1秒間隔で送信されます。
RTT> 4の場合、pingは4秒間隔(または5、不明)で送信され、サーバーが応答しなかった場合と同様に、すべて失敗として報告されます。

25
EvgEnZh

EvgEnZhによる回答から部分的に外れますが、自分のバージョンでは:

ping -O -q 8.8.8.8

これにより、返信に時間がかかりすぎるか返されない(-O)ときにメッセージを出力し、返信されたときにメッセージを抑制します(-q)。その結果、パケットが欠落した場合にのみ出力が得られます。これにより、断続的な問題を見つけるのがはるかに簡単になり、壊れた少数の場所について「機能した」メッセージの山をふるいにかける必要がなくなります。

11
Azendale

おそらくping -fが適しています。 pingマニュアルから:

-f

フラッディングping。 ECHO_REQUESTが送信されるたびにピリオド ''。 ''が出力され、ECHO_REPLYが受信されるたびにバックスペースが出力されます。これにより、ドロップされているパケットの数が迅速に表示されます。 intervalが指定されていない場合は、intervalをゼロに設定し、パケットが戻ってくるのと同じ速さで、または1秒間に100回、どちらか大きい方を出力します。スーパーユーザーのみがゼロ間隔でこのオプションを使用できます。

1秒ごとに1つのecho_requestの場合、ping -i 1 -f 8.8.8.8のようになります

3

-vオプションを使用しても、pingは実行しません。 この質問 を参照してください。しかし、これが本当に重要な(または楽しい)場合は、ソースをダウンロードし、適切なprintf呼び出しを含むようにコードを変更できます。それに適した場所は、メソッド 'send_probe'の最後です(12.10の619行目)...

最初にソースを取得します

apt-get source iputils
cd iputils*

編集する

gedit ping.c

生成されたパッケージをビルドしてインストール...

apt-get install libsysfs-dev
dpkg-buildpackage
0
Rémi