pingコマンドの実行結果を見ると,ネットワークに接続できているかどうか以外にもわかることがある。ここでいくつか紹介しよう。
実行結果からいろんなことがわかる
ホストから応答があった場合,「Reply from ・・・・」の末尾にある「TTL=・・・xxx」を見てほしい。これは相手から戻ってきた応答パケットのTTLの数値を示している。このTTLの値はホストのOSで決められた初期値から,経由したルーターの数を引いたものである。Windowsの初期値は128,Linuxは64,Solaris は 255となっている。一般に,ホストから応答パケットが返ってくるまでの間に50~60台もルーターを経由することはないので,TTLの値を見るとホストのOSが推定できる(図4)。
実行結果が「Request timed out.」となって応答パケットが返ってこない場合,通常なら何らかのトラブルでネットワークに接続できていないはず。それなのに,ネットワーク接続はできているというケースがある。これは,相手のセキュリティ対策でWindowsファイアウォールがpingコマンドに対して応答しない設定になっている可能性がある。悪意を持った人が攻撃目標の調査やネットワークに負荷をかけるなどの目的で,pingコマンドを悪用することを防ぐためにこのような設定になっていることがある。
このほか,DNSサーバーやルーターがエラー・メッセージを返してくるケースもある。こうしたエラー・メッセージからもいろいろなことがわかる(図5)。
出力結果を保存して後から活用しよう
いろいろなことがわかるpingコマンドの実行結果を残しておけば,後からも記録簿や統計データとして活用できる。そこで,実行結果をテキスト・ファイルに保存する方法と,そのテキスト・ファイルから統計データのみを抽出する方法を紹介する。
まず,出力結果をテキスト・ファイルに保存する方法を紹介しよう。コマンドの最後に「>」や「>>」を入力してその後に適切なファイル名を指定すればよい。例えば,-nオプションで実行回数を5回としたpingコマンドを実行し,その結果を「result.txt」というテキスト・ファイルに保存するためには,次のように入力する。
ping -n 5 192.168.100.1 > result.txt
このresult.txtを開いてみると,コマンド・プロンプトの画面出力がそのまま保存されていることがわかるだろう(図6)。
次に,この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)の順に記録されていることがわかる。