タイムスタンプ付きping(Linux/Windows)

シェアする

障害試験等にて、pingを打って切り替え時の時間を計測したい。という試験があるかと思います。その際、専用ツールをインストールし試験を実施するとかありますが、特殊環境のため、専用ツールをインストールできない。ってありますね。
そんな時、OS標準機能にて機能の実装が必要です。ネットを見ていたのですが、LinuxはOS標準でできるのですが、Windowsが専用ツールや、もしくは、WSH等で開発したとか。。面倒なんですよね。なんで、PowerShellで実装できる方法を検討しました。

Linuxでの実装

Linuxでは、以下コマンドを実装すると、タイムスタンプ付きPINGを送付が可能です。

ping 8.8.8.8 | while read i; do echo "$(date '+[%Y/%m/%d %H:%M:%S]') $i"; done

上記利用結果が以下の通りです。接続先の確認にて、8.8.8.8 のPING接続先を変更ください。

$ ping 8.8.8.8 | while read i; do echo "$(date '+[%Y/%m/%d %H:%M:%S]') $i"; done
[2018/02/07 10:05:46] PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[2018/02/07 10:05:46] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=22.7 ms
[2018/02/07 10:05:47] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=55 time=22.8 ms
[2018/02/07 10:05:48] 64 bytes from 8.8.8.8: icmp_seq=3 ttl=55 time=22.7 ms
[2018/02/07 10:05:49] 64 bytes from 8.8.8.8: icmp_seq=4 ttl=55 time=22.7 ms

応答がない場合は、表示されませんので、表示から時間が欠落しているところが断時間としてください。

Windowsでの実装

Windowsは、PowerShellにて実装しています。タイムスタンプの裏の改行をどうしても外すことができず。(誰か知っていたら教えてください)

while(1) { Get-Date -Format "[yyyy/MM/dd HH:mm:ss]" ; ping -n 1 -w 1 8.8.8.8 | select-string "応答" | % { "$_".trimend() } ; sleep 1 }

上記利用結果が以下の通りです。OSの言語環境にて「応答」を変更ください。また、接続先の確認にて、8.8.8.8 のPING接続先を変更ください。

>while(1) { Get-Date -Format "[yyyy/MM/dd HH:mm:ss]" ; ping -n 1 -w 1 8.8.8.8 | select-string "応答" | % { "$_".trimend() } ; sleep 1 }
[02/07/2018 10:12:40]
8.8.8.8 からの応答: バイト数 =32 時間 =3ms TTL=55
[02/07/2018 10:12:41]
8.8.8.8 からの応答: バイト数 =32 時間 =3ms TTL=55
[02/07/2018 10:12:42]
8.8.8.8 からの応答: バイト数 =32 時間 =3ms TTL=55

応答がない場合は、タイムスタンプのみ表示されます。

> while(1) { Get-Date -Format "[yyyy/MM/dd HH:mm:ss]" ; ping -n 1 -w 1 1.1.1.1 | select-string "応答" | % { "$_".trimend() } ; sleep 1 }
[02/07/2018 10:15:30]
[02/07/2018 10:15:31]
[02/07/2018 10:15:33]

ではでは。

コメント

  1. My spouse and I stumbled over here from a different website and thought
    I might as well check things out. I like what I see so i am just following
    you. Look forward to exploring your web page yet again.

トップへ戻る