IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Pythonでネットワーク自動化をしよう

CTC 教育サービス

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes 

第43回 Pythonとネットワーク自動化基礎検定 模擬問題解説(5) (小澤昌樹) 2026年5月14日公開

みなさん、こんにちは。

今回は、「Pythonとネットワーク自動化基礎検定」の出題範囲の中でも、ライブラリの使い方についての理解度が問われやすい部分に焦点を当てましょう。ネットワーク自動化のスクリプトは、単に動くコードを書ければよいわけではありません。実務でも試験でも、

  • どのライブラリを選ぶべきか
  • そのライブラリは何が得意で、何が不得意か
  • 目的に対して、どのAPIや関数を使うのが適切か

といった判断ができるかどうかは重要です。たとえば、「情報を取得したい」「ログを保存したい」という同じ目的でも、NAPALMを使うべき場面と、Netmikoを使うべき場面は異なります。こうした違いを理解していないと、スクリプトは書けても、現場では使いづらいものになってしまいます。今回は、そうしたライブラリの役割や使いどころを整理しながら確認できる問題にしました。「なぜこの選択になるのか」を意識しながら読んでみてください。

【問題1】NAPALMで取得できる情報

次は、NAPALMを使ってネットワーク機器の情報を取得するコードです。変数 facts に含まれる情報の説明として、正しいものを1つ選びなさい。


from napalm import get_network_driver

driver = get_network_driver(’ios’) device = driver(’192.168.1.1’, ’admin’, ’password’) device.open()
facts = device.get_facts() print(facts)
device.close()

選択肢:
A. facts は文字列であり、正規表現で解析する必要がある
B. facts は辞書で、ホスト名や稼働時間などの基本情報が含まれる
C. facts には running-config の全文が含まれる
D. facts はJSON形式の文字列として返される

正解:
B

解説:
NAPALMの get_facts() は、機器に接続して「機器の基本情報」を取り出し、辞書(dict)として返します。辞書で返るという点が重要で、CLI出力のように整形された文字列を解析するのではなく、キーを指定して値を取り出せます。たとえば次のように扱います。


facts = device.get_facts()
print(facts[”hostname”])
print(facts[”os_version”])
print(facts[”uptime”])

ここで得られる情報は、だいたい、固定的で変化しにくい機器情報です。代表例は以下です。

  • hostname(ホスト名)
  • vendor(ベンダー)
  • model(機種)
  • os_version(OSバージョン)
  • uptime(稼働時間)
  • serial_number(シリアル)

NAPALMは、共通APIとして情報を取り出せるのが強みで、出力をパースするよりも辞書から目的の値を抽出できるようにしておきましょう。

【問題2】Netmikoのsend_command

Netmiko ライブラリを使うメリットとして最も適切なものを1つ選びなさい。

選択肢:
A. 機器のホスト名やOSバージョンを統一的に取得したい
B. running-config を差分比較してバックアップしたい
C. 特定の show コマンドを実行し、その出力をそのまま保存したい
D. ベンダーごとの差異を意識せずに情報を取得したい

正解:
C

解説:
Netmikoの強みの一つは、ネットワーク機器にSSHで入り、CLIコマンドをそのまま実行できることです。普段ターミナルで打っている show コマンドをPythonで自動化するイメージです。なお、show コマンドの返却は文字列で受け取れます。たとえば以下のように記述します。


logs = net_connect.send_command(”show logging”)
with open(”logs.txt”, ”w”) as f:
  f.write(logs)

Netmikoは、次のような場面に向いています。

  • show logging / show version などをそのまま取りたい
  • 機器ごとにコマンドの癖があっても、ある程度力技で対応したい
  • 既存の運用手順(CLIベース)を、そのまま自動化したい

NetmikoとNAPALMの使い分けは、次のように判断するとよいでしょう。

  • CLI出力をそのまま取りたい → Netmiko
  • 構造化されたデータが欲しい、ベンダー差を吸収したい → NAPALM
【問題3】OpenPyXLでのExcel操作

次は、OpenPyXLを使ってExcelファイルにデータを書き込むコードです。このコードの説明として正しいものを1つ選びなさい。


from openpyxl import Workbook

wb = Workbook() ws = wb.active ws.title = ”Status”
ws.append([”hostname”, ”cpu”, ”memory”]) ws.append([”router01”, 23, 45])
wb.save(”status.xlsx”)

選択肢:
A. append() は常にセルA1から上書きする
B. Workbook() を呼ぶと自動的に既存ファイルが開かれる
C. ws.append() は行単位でデータを追加する
D. wb.save() を呼ばなくてもファイルは保存される

正解:
C

解説:

OpenPyXLは、Excelファイル(.xlsx)をPythonから操作するためのライブラリです。それに含まれる append() は1行分のデータをそのまま追加できるメソッドです。


ws.append([”hostname”, ”cpu”, ”memory”])
ws.append([”router01”, 23, 45])

このコードのように記述すると、最初の append では1行目、2回目の append では2行目、というように、次の空行に追記されます。

  • 上書きしたい場合は、ws[”A1”] = "hostname” のようにセルを指定します。
  • Workbook() はファイルを新規作成します。既存ファイルを開くには load_workbook(”status.xlsx”) を使います。
  • Excelファイルを保存するには、明示的に save() する必要があります。
まとめ

今回は、ネットワーク自動化でよく使われる主要なライブラリについて整理しました。

  • NAPALM は、ネットワーク機器の情報を構造化された形で取得できます。
  • Netmiko は、CLI コマンドをそのまま自動化したい場面で使えます。
  • OpenPyXL は、取得した結果をレポートとして残すような場面で活用しましょう。

これらのライブラリは、単に使い方を覚えるだけでなく、「どの場面で、なぜそのライブラリを選ぶのか」という視点で理解することが重要です。それを判断できると、実務で使えるような自動化スクリプトを、もっと柔軟に書けるようになるでしょう。

さて次回は、例外処理やタイムアウト、エラーハンドリングといった「失敗を前提にした自動化」をテーマに取り上げる予定です。現場や理解でも役立つ内容です。どうぞお楽しみに。

 

 [IT研修]注目キーワード   Python  Power Platform  最新技術動向  生成AI  Docker  Kubernetes