全1646文字
PR

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

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

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

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

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

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

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

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

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

この記事は有料会員限定です

日経クロステック有料会員になると…

専門雑誌8誌の記事が読み放題
注目テーマのデジタルムックが読める
雑誌PDFを月100pダウンロード

日経電子版セット今なら2カ月無料