ネットワークエンジニアのプログラミング【Python入門(Ping実行)】

当ページのリンクには広告が含まれています。
ネットワークエンジニアのプログラミング【Python入門(Ping実行)】

ネットワークエンジニアがよく利用するPingを、15行のPythonコーディングでツール化します。

目次

Pingによる疎通確認

ネットワークエンジニアは、Pingによる疎通確認を実施する場面が多くあります。「設定変更前後の正常性確認」や「障害対応時」等、Pingを利用して複数の機器への疎通確認を実施します。

Pingを実行するツールとしては「ExPing」があります。ExPingは、とても使いやすいツールですので、Windowsの場合は困ることはありません。

しかし、Pythonで簡単なコードが書くことができれば、LinuxやMacでも同じようなことができますし、利用場面に合わせて、使いやすいようにカスタマイズすることができます。

Ping実行してる人

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なら青ざめます

「OKならビールで乾杯」、「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ツールのカスタマイズ

今回は対象機器にPingを1回ずつ実行して結果を表示するツールでしたが、下記のようなカスタマイズも自由にできます。

Pingツールのカスタマイズの例
  • ctrl+c で止めるまでは繰り返し実行し続ける。
  • 画面表示と同時にファイルにも結果を保存する。( エビデンス保存の簡略化)

これで、ネットワークエンジニアのプログラミング【Python入門(Ping実行)】の説明は完了です!プログラミングができると、仕事の効率化ができますし、何より仕事を楽しむことができます!!

プラグラミング学習サイト・スクール情報

簡単なツール作成であれば、独学でも十分にプログラミングが可能になると思います。短期間で体系的に学習するのであれば、「有料学習サイト」や「オンラインスクール」の利用をおすすめします。

どちらのサイトも無料で学習可能な範囲があります。有料コンテンツに関しては、月額1000円程度です。

  • URLをコピーしました!
  • URLをコピーしました!
目次