ネットワークエンジニアがよく利用するPingを、15行のPythonコーディングでツール化します。
Pingによる疎通確認
ネットワークエンジニアは、Pingによる疎通確認を実施する場面が多くあります。「設定変更前後の正常性確認」や「障害対応時」等、Pingを利用して複数の機器への疎通確認を実施します。
Pingを実行するツールとしては「ExPing」があります。ExPingは、とても使いやすいツールですので、Windowsの場合は困ることはありません。
しかし、Pythonで簡単なコードが書くことができれば、LinuxやMacでも同じようなことができますし、利用場面に合わせて、使いやすいようにカスタマイズすることができます。
Pythonによる簡単なPingツール
ネットワーク環境
下記のネットワーク環境で、ルーター10台に対してPingによる疎通確認を行います。
実行環境・前提条件
実行環境
今回の実行端末の環境は下記の通りです。Windowsでも、Pythonをインストールしていれば、実行可能です。
- OS:macOS
- Pythonバージョン:3.9.13
hostファイル登録
ホスト名を指定してPingが実行できるように、hostsファイルに下記の記載をしています。
192.168.2.1 Router1
192.168.2.2 Router2
192.168.2.3 Router3
192.168.2.4 Router4
192.168.2.5 Router5
192.168.2.6 Router6
192.168.2.7 Router7
192.168.2.8 Router8
192.168.2.9 Router9
192.168.2.10 Router10
対象機器リスト
Pingで疎通確認する対象の機器を『destinations.txt』として、Pythonプログラムと同じフォルダに保存します。
Router1
Router2
Router3
Router4
Router5
Router6
Router7
Router8
Router9
Router10
Pythonコード
Pingを実行するプログラムは『pyping.py』として、下記のコードを記述します。
import subprocess
#pingを実行し、成功ならTrue、失敗ならFalseを返す
def exec_ping(dest):
p = subprocess.run(["ping", dest, "-t", "1"], capture_output=True)
return p.returncode == 0
#ping実行先をファイルから読み込んで結果を表示
with open('destinations.txt', 'r') as f:
for line in f:
dest = line.strip()
if exec_ping(dest):
print(dest + " OK 👍🍺") #OKならビールで乾杯
else:
print(dest + " NG 😨⁉️") #NGなら青ざめます
★★ コードの詳細説明はこちらをクリックしてください ★★
import subprocess
Pythonでは様々な便利な機能が使える「ライブラリ」というものを利用します。今回は『subprocess』というライブラリを利用してOS標準のPingコマンドを実行します。
def exec_ping(dest):
Pingを実行する「exec_ping」という関数を定義します。
p = subprocess.run(["ping", dest, "-t", "1"], capture_output=True)
Pingコマンドを実行します。”-t 1″オプションを付与して試行回数を1回としています。『capture_output=True』は実行結果を取得するための記述ですが、プログラミング初心者のうちは「おまじない」だと思ってもらえれば大丈夫です。
return p.returncode == 0
『subprocess』を利用してPingを実行すると、”成功=0″、”失敗=0以外”という戻り値を受け取ります。この行は、「PIng成功であればTrueを返す、それ以外であればFalseを返す」という記述になります。
with open('destinations.txt', 'r') as f:
「destinations.txt」を読み込みます。
for line in f:
1行ずつ読み込んで、最終行まで繰り返します。(for関数によるループ処理です。)
dest = line.strip()
空白等の余計な文字を削除して、「dest」という変数にPingの宛先を格納します。
if exec_ping(dest):
「exec_ping」関数を呼び出してPingを実行し、成功=Trueが返ってくるかを確認します。
print(dest + " OK 👍🍺") #OKならビールで乾杯
成功=Trueが帰ってきた場合は、「ホスト名 + OK + 絵文字(手とビール)」を出力します。
else:
print(dest + " NG 😨⁉️") #NGなら青ざめます
失敗=Falseが帰ってきた場合は、「ホスト名 + NG + 絵文字(青ざめた顔と感嘆符疑問符)」を出力します。
Pingツールの実行結果
作成したPythonプログラムを実行します。※Router4とRouter9をダウンさせています。
python pyping.py
Pingツールのカスタマイズ
今回は対象機器にPingを1回ずつ実行して結果を表示するツールでしたが、下記のようなカスタマイズも自由にできます。
- ctrl+c で止めるまでは繰り返し実行し続ける。
- 画面表示と同時にファイルにも結果を保存する。( エビデンス保存の簡略化)
これで、ネットワークエンジニアのプログラミング【Python入門(Ping実行)】の説明は完了です!プログラミングができると、仕事の効率化ができますし、何より仕事を楽しむことができます!!
- Progate 〜 プログラミングの入門なら基礎から学べるProgate[プロゲート]
- ドットインストール 〜 3分動画でマスターできるプログラミング学習サービス
どちらのサイトも無料で学習可能な範囲があります。有料コンテンツに関しては、月額1000円程度です。