全2591文字
PR

 企業のシステム管理者にとって、ネットワーク監視などの日々の運用は欠かせない。企業システムはインターネットやLANの利用を前提としており、ネットワークにトラブルが発生すると業務に支障を来してしまう。

 そこでシステム管理者はネットワークの疎通を調べたり、機器の挙動を確かめたりする。そのために手順書を用意し、手作業で実施するシステム管理者も少なくない。例えばネットワークコマンドを順番に入力して、毎回手順書に従って機器の死活監視などを実施するという具合だ。

 しかし手作業でネットワークコマンドを実行していると、管理対象の機器やコマンドの種類が増えるにつれて手間や時間がかかるようになる。さらに手作業ではミスも発生しやすい。

自動化すれば面倒な手作業が不要に
自動化すれば面倒な手作業が不要に
[画像のクリックで拡大表示]

 こうした面倒な手作業はプログラムによって自動化するに限る。人気プログラミング言語のPythonには、ネットワーク管理のためのモジュール(ライブラリー)が用意されている。これを利用してPythonで自動化する方法を解説する。

Pythonの実行環境を準備

 下準備としてWindows 10にPythonの実行環境をインストールする。PowerShellで「python」と入力してEnterキーを押す。するとWindows Storeが起動して「Python 3.10」をインストールする画面に遷移する。「インストール」ボタンを押してインストールを進める。

Pythonの実行環境をインストール
Pythonの実行環境をインストール
[画像のクリックで拡大表示]

 正しく実行環境がインストールできたかどうかは、pythonコマンドで確認できる。PowerShellで「python --version」と入力して実行する。Pythonのバージョンが「Python 3.10.5」のように表示されれば、正しくインストールできている。

死活監視を自動化する

 Pythonプログラムを駆使してネットワーク管理の作業を自動化してみよう。まず通信相手のネットワーク機器やサーバーが正しく稼働しているかどうかを調べる死活監視のプログラムを作成する。

 指定した相手と通信可能かどうかを調べるには、ネットワークコマンドのpingを利用することが多い。pingは「ping 192.168.0.1」のように通信相手のIPアドレスを指定する。DNS(Domain Name System)でネットワーク機器の名前解決をできるようにしているのなら、機器の名前も指定できる。

subprocessモジュールを使う

 ではpingコマンドをPythonプログラムから実行してみよう。手始めに単純なプログラムを作成して実行する。pingはOSに備わっているネットワークコマンドだ。こうしたコマンドをPythonプログラムから実行するには、「subprocess」というモジュールが使える。モジュールをプログラムに組み込むには、最初に「import subprocess」と記述する。

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

 subprocessモジュールを読み込むと、モジュールに含まれるrun関数を利用できるようになる。run関数にコマンドの内容を「リスト」と呼ぶ形式で渡す。リストとは[と]で囲まれた一連の要素で、要素はカンマ(,)で区切る。例えば["ping", "-n", "1", "192.168.0.1"]というリストを渡すと、コマンドプロンプトやPowerShellで「ping -n 1 192.168.0.1」を実行するのと同じ結果が得られる。

 このプログラムをメモ帳などで記述し、ファイル名の拡張子は「.py」にして保存する。コメントなどを日本語で入力する場合は文字エンコーディングをUTF-8にする。Pythonの実行環境は、拡張子が「.py」のファイルをPythonプログラムとして認識する。コマンドプロンプトやPowerShellで「python プログラムファイル名」と入力すれば、そのプログラムが実行される。

 この特集ではプログラムを実行するのに、PowerShellを利用している。Cドライブ直下に作成したPythonフォルダー(C:\Python)にプログラムを保存し、PowerShellは管理者権限で起動している。今後、説明するプログラムやCSVファイルは、同じフォルダーに配置していく。