指定した相手と通信が可能かどうかを調べるコマンドがpingだ。機器がダウンしていると通信できなくなるため、機器の死活監視にもよく使われている。

 監視対象の機器が少ない場合は、相手先のIPアドレスやホスト名で指定してpingコマンドを手入力してもかまわない。しかし、対象機器が多くなると、手入力では大変な手間がかかる。そこで、この作業をPythonで自動化してみよう。

機器一覧を読み込んでpingを自動送信
[画像のクリックで拡大表示]

 まずpingで指定する機器のIPアドレスまたはホスト名の一覧をファイルにしておく。このファイルを読み込んで、それぞれの機器に対してpingを送信するプログラムを記述する。このプログラムを実行すれば、一覧に記されたすべての機器にpingを送れる。対象機器を変えたい場合は、一覧ファイルを編集するだけでいい。

単純なコードから徐々に改良していこう

 目的のPythonコードを一気に作るのは大変なので、単純なコードから始めて徐々に改良していこう。最初は、単独のpingコマンドを実行するコードだ。

subprocessモジュールでpingコマンドを実行
[画像のクリックで拡大表示]

 Pythonコードの中から外部のコマンドを実行する場合には、subprocessというモジュールを利用する。ここではコードの1行目で「import subprocess」と記述して、subprocessをインポートしている。このようにモジュールやライブラリーを指定してインポートすることで、コードから利用できるようになる。

 subprocessのrunという関数にコマンドの内容を渡すことで、そのコマンドが実行される。コマンドの内容は、コマンドを構成する文字列を並べたリストの形で指定する。ここでは「ping 192.168.1.1 -n 1」を実行している。「-n 1」はパケットを1回だけ送ることを指定するオプションだ。pingによるパケットを1回送信し、応答が返ってきたことを示すメッセージが表示されている。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。