CommentsTweetPocket仕事でLinuxを利用していれば、必ずやお世話になるであろうpingコマンド。大体の人はなんとなく使っていないだろうか?今回は、そんなpingコマンドで覚えておきたい使い方についてを紹介する。目次1.基本的な使い方2.指定した回数分pingを実行する3.指定したインターフェイスからpingを実行する4.指定したホストへの通過点(ゲートウェイ)を指定する5.指定したホストへ直接接続を行う6.pingの実行間隔を指定する7.pingで送信するパケットサイズを指定する8.ping実行時のttl値を指定する9.ping実行時のタイムアウト値を指定する10.ping実行時のループバックを抑制する11.ping実行時の開始時・終了時のメッセージのみ出力させる12.ping実行中に「Ctrl+\」を押下し、実行状況を表示させる13.ネットワークのルートを表示する14.for、arpと組み合わせ、連続でpingを実行し現在疎通可能なホスト一覧を取得する15.pingの実行結果から相手先のOSを推測する16.複数のホストに同時にpingを実行する17.タイムスタンプを付与する18.pingが通る場合・通らない場合でビープ音を鳴らす1.基本的な使い方まずは基本的な使い方...といっても、大体の人はわかるだろう。以下のようにコマンドを実行する事で、相手先のホストが疎通可能な状態かを確認する。msWindowsと違い、オプション無しで連続実行されるため、停止する場合は「Ctrl+C」でキャンセルするまでpingを実行し続ける。ホスト名を指定して実行した場合、名前解決も行ってくれる。msなお、疎通が出来た場合のexitコードは0、疎通できなかった場合のexitコードは1となっている。$?02.指定した回数分pingを実行する「-c」オプション(count)を指定する事で、指定回数分のpingを実行させることが可能だ。ms3.指定したインターフェイスからpingを実行する「-Iオプション」で、指定したインターフェイス(eth0、eth1など)からpingを実行させる事ができる。ms4.指定したホストへの通過点(ゲートウェイ)を指定するLinuxのpingでは、ゲートウェイ(hop)を指定して、必ずそこを通過してホストへの疎通確認を行うようにすることも出来る。指定する通過点が複数ある場合は、連続して複数指定する。相手先のホスト名(IPアドレス)なお、この機能はソースルーティング方式となるため、環境によってはFWで弾かれたり、アラートが上がってしまうので注意が必要である。5.指定したホストへ直接接続を行う「-r」オプションを利用することで、同一セグメントのホストに対してのみ疎通確認を行うように出来る。3023ms6.pingの実行間隔を指定する「-i」オプションで、pingの実行間隔を秒単位で指定することができる。0.1」で0.1秒となる。相手先のホスト名(IPアドレス)7.pingで送信するパケットサイズを指定する「-s」オプションを指定することで、pingで送信するパケットのサイズを指定することができる。Links8.ping実行時のttl値を指定する「-t」オプションを使用することで、pingコマンド実行時に送信側(ping実行側)のTTL値を指定する事が出来る。ms9.ping実行時のタイムアウト値を指定する「-w」オプションを用いる事で、pingコマンドのタイムアウト値(秒)を指定出来る。相手先のホスト名(IPアドレス)10.ping実行時のループバックを抑制する「-L」オプションを用いる事で、pingのループバックを抑制することができる。相手先のホスト名(IPアドレス)11.ping実行時の開始時・終了時のメッセージのみ出力させる「-q」オプションを用いると、pingの開始・終了時のメッセージのみを表示させるようにできる。\」キーを押下することで、実行状況(パケットロスの発生数など)を表示させることが出来る。ms13.ネットワークのルートを表示するtracerouteに比べあまり利用されておらず、サポートもされていないようだが、「-R」オプションを利用することで対象ホストまでのネットワークルートを出力させることが出来る。route)14.for、arpと組み合わせ、連続でpingを実行し現在疎通可能なホスト一覧を取得するfor、arpと組み合わせてpingを実行し、連続で総当りにpingを実行、疎通可能なホストの一覧を取得させることも可能だ。・もしくは、以下のようにxargsと組み合わせることで、パラレルで一気にpingを実行して疎通確認を行う方法もある。ttl15.pingの実行結果から相手先のOSを推測する以前こちらにも記述したが、pingの応答メッセージに記述されるTTL値から、相手先のOSをある程度推測することが可能となっている。応答時のTTL値が、以下の数字に近ければそのOSになるだろう。msなお、ここで出来るのはあくまでも推測でしか無い。こちらでも記述したが、この応答時のTTLはカーネル値(Windowsの場合はレジストリ)で変更可能だからだ。16.複数のホストに同時にpingを実行する複数のホストに同時にpingを実行し、死活監視を行いたい場合、pingよりはその派生であるfpingを用いると良いだろう。fpingについては、こちらのページに記述している。pingコマンドで常時監視をするならば、以下のようにコマンドを実行しバックグラウンドでpingを連続実行させ、その結果を別途ファイルに出力させておくことで、数秒ごとのpingのexitコードを確認することが出来る。&OK、NGで確認するならば、以下のようにする。&ホストごとにファイルを作成し、疎通確認時は、以下のようにgrepコマンドなどで確認すれば良いだろう。test_ping*test_ping_192.168.0.1:OKtest_ping_192.168.0.15:NGtest_ping_192.168.0.245:OKむろん、別途cronなどでhttpファイルの生成スクリプトを実行させ、そこで各ファイルを読み込ませる方式でもいいだろう。追記17.タイムスタンプを付与する以前こちらにも記述したが、pingの実行結果にタイムスタンプを付与させる事も出来る(ping単体ではムリ)。ビープ音を鳴らす事が出来る。毎回なるので連続実行時は正直うるさいので注意。blacknonインフラエンジニア(...のつもり)。仕事で使うならクライアントはWindowsよりはUNIXの方が好き。Commentコメントをキャンセルメールアドレスが公開されることはありません。