pingコマンドの実行結果を見ると,ネットワークに接続できているかどうか以外にもわかることがある。ここでいくつか紹介しよう。

実行結果からいろんなことがわかる

 ホストから応答があった場合,「Reply from ・・・・」の末尾にある「TTL=・・・xxx」を見てほしい。これは相手から戻ってきた応答パケットのTTLの数値を示している。このTTLの値はホストのOSで決められた初期値から,経由したルーターの数を引いたものである。Windowsの初期値は128,Linuxは64,Solaris は 255となっている。一般に,ホストから応答パケットが返ってくるまでの間に50~60台もルーターを経由することはないので,TTLの値を見るとホストのOSが推定できる(図4)。

図4●TTLの値でOSの種類がわかる<br>TTL(time to live)の初期値はホストのOSによって決まっている。例えばWindowsは128から,Linuxは64から,Solarisは255からといった具合である。このため応答パケットのTTLの値を見るとOSの種類が推定できる。下の画面は同一サブネット上にあるホストにpingコマンドを打ったケース。ルーターを経由していないので,TTLの値は初期値のままである。
図4●TTLの値でOSの種類がわかる
TTL(time to live)の初期値はホストのOSによって決まっている。例えばWindowsは128から,Linuxは64から,Solarisは255からといった具合である。このため応答パケットのTTLの値を見るとOSの種類が推定できる。下の画面は同一サブネット上にあるホストにpingコマンドを打ったケース。ルーターを経由していないので,TTLの値は初期値のままである。
[画像のクリックで拡大表示]

 実行結果が「Request timed out.」となって応答パケットが返ってこない場合,通常なら何らかのトラブルでネットワークに接続できていないはず。それなのに,ネットワーク接続はできているというケースがある。これは,相手のセキュリティ対策でWindowsファイアウォールがpingコマンドに対して応答しない設定になっている可能性がある。悪意を持った人が攻撃目標の調査やネットワークに負荷をかけるなどの目的で,pingコマンドを悪用することを防ぐためにこのような設定になっていることがある。

 このほか,DNSサーバーやルーターがエラー・メッセージを返してくるケースもある。こうしたエラー・メッセージからもいろいろなことがわかる(図5)。

図5●エラー・メッセージからわかること
図5●エラー・メッセージからわかること

出力結果を保存して後から活用しよう

 いろいろなことがわかるpingコマンドの実行結果を残しておけば,後からも記録簿や統計データとして活用できる。そこで,実行結果をテキスト・ファイルに保存する方法と,そのテキスト・ファイルから統計データのみを抽出する方法を紹介する。

 まず,出力結果をテキスト・ファイルに保存する方法を紹介しよう。コマンドの最後に「>」や「>>」を入力してその後に適切なファイル名を指定すればよい。例えば,-nオプションで実行回数を5回としたpingコマンドを実行し,その結果を「result.txt」というテキスト・ファイルに保存するためには,次のように入力する。

ping -n 5 192.168.100.1 > result.txt

 このresult.txtを開いてみると,コマンド・プロンプトの画面出力がそのまま保存されていることがわかるだろう(図6)。

図6●出力結果をテキスト・ファイルに保存
図6●出力結果をテキスト・ファイルに保存
pingコマンドの最後に「пi保存するファイル名)」を付けると,実行結果をコマンド・プロンプトの画面ではなく,テキスト・ファイルに保存することができる。

 次に,このresult.txtからネットワークの応答時間の数値だけを抽出して,統計データとして別のテキスト・ファイル「ping_daily.txt」に保存するための方法を紹介しよう。「for」コマンドを使って,次のように記述する

for /F "eol=; skip=12 tokens=4,9,13 delims=m " %%i in (result.txt) do @echo %DATE%,%time:~0,2%:%time:~3,2%:%time:~6,2%,%%i,%%j,%%k >> ping_daily.txt

 実行後のping_daily.txtを開いてみると,年月日(date),時刻(time),応答時間の最小値(min),最大値(max),平均値(avg)の順に記録されていることがわかる。