ネットワーク上の約700台のデバイスでコマンドを実行するESXi VMがあります。使用され、Expect
これらのデバイスの老化により性能が低下する。 2つはうまく混ざりません。これは、Expectスクリプトが出力を続行するのに長い時間待たなければならないからです。
これを防ぐために、チームはping
デバイスに接続する前にテストすることにしました。パケット損失が発生した場合は後で議論します。
私たちが持っている問題は、pingテストが次のようになることです。
loss=`ping -i 0.2 -w 2 $1 | grep "packet loss" | awk '{print $6}'`
loss=${loss%?}
echo "$loss"
2秒でping 10 - しかし、私たちはたくさん9%パケット損失応答。たとえば、私たちは通常74/700パケット損失の検出により、テストは早く終了します。74年39月このレポートのうち9%、残りは 10 の倍数として報告されます。
私たちが知る限り、これは実際には言葉ではありません。 10個のパケットが送信されています。そのうちの1つが失われると、損失は10%です。これはほとんど観察されませんが、発生します。数字9が現れる原因となるどんなことが記憶で起こっている可能性がありますか?これが正当なパケット損失のケースであれば、これは私たちにとって大きなニュースです。
ベストアンサー1
pingにはいくつかのバージョンがあります。一部の人には-w
選択肢があります。一部の人々はそれを受け入れますが、記録しません。一部のpingバージョンでは、次のことが発生します。
$ ping -i 0.2 -w 2 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.086 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.097 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.091 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.095 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.095 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.092 ms
--- 127.0.0.1 ping statistics ---
11 packets transmitted, 10 packets received, 9% packet loss
round-trip min/avg/max/stddev = 0.086/0.091/0.097/0.000 ms
つまり、データパケットが送信されると、時間が経過した後は再び受信されません。
したがって、11個が1個のパッケージが失われ、これは9%の損失です。
これらのpingバージョンの場合は、-c
オプションを追加するだけです。
$ ping -i 0.2 -c 10 -w 5 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.127 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.088 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.084 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.093 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.089 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.087 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.094 ms
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.084/0.093/0.127/0.000 ms
つまり、10個のパケットが受信されるか5秒のタイムアウトが経過するまで、0.2秒ごとにパケットを試みます。