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

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

研修コース検索

コラム

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

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第26回 OpenPyXLライブラリ(6)実例② (小澤昌樹) 2024年9月

1. はじめに

みなさん、こんにちは。

これまで、OpenPyXLライブラリを使ってExcelファイルを操作する基本的な方法を解説してきました。データの入力、編集、計算、グラフ化など、日常業務で役立つ具体的な方法を取り上げ、これらを効果的に活用することで業務効率を向上させる手法をお伝えしてきました。その中で、条件付き書式設定などのExcelの強力な機能をOpenPyXLで実現する方法も紹介しました。

前回は、ビジネスシーンでの実例として、売上データ管理用と在庫管理用のExcelファイルを作成する手順を説明しました。データの整理や分析を自動化できると、業務の迅速化と正確性の向上が図れます。

今回はさらに、ネットワーク自動化という文脈でOpenPyXLをどのように活用できるかを具体的に見ていきます。ネットワーク自動化において、Excelファイルを活用して設定情報を管理し、それを基にスクリプトを自動生成する方法を紹介し、ネットワーク機器への一括設定や、変更管理が容易になることを見ていこうと思います。

2. ネットワーク自動化での活用例

ネットワーク自動化では、多くの場合、ネットワーク機器の設定情報やステータスを管理し、それに基づいて自動化スクリプトを作成したり、実行したりします。OpenPyXLを使用すると、ネットワーク機器のこれらの情報をExcelファイルとして管理でき、スクリプトによる自動化をサポートすることが可能となります。以下に具体例を示しましょう。

ネットワーク機器の設定情報をExcelに保存

まず、複数のネットワーク機器のIPアドレス、サブネット、ゲートウェイ、VLAN設定などの情報をExcelファイルにまとめる方法です。


import openpyxl

# 新しいExcelワークブックを作成 wb = openpyxl.Workbook() sheet = wb.active sheet.title = "network_config"
# ヘッダーを設定 headers = [’Device Name’, ’IP Address’, ’Subnet’, ’Gateway’, ’VLAN’] sheet.append(headers)
# 設定情報を追加 devices = [ [’Router1’, ’192.168.1.1’, ’255.255.255.0’, ’192.168.1.254’, ’10’], [’Switch1’, ’192.168.1.2’, ’255.255.255.0’, ’192.168.1.254’, ’20’] ]
for device in devices: sheet.append(device)
# ファイル保存 wb.save(’network_config.xlsx’)

fig01

設定情報を基にしたスクリプトの自動生成

上記で作成したExcelファイルを読み込み、ネットワーク機器に対する設定スクリプトを自動生成してみます。ここでは、一般的なCisco製のネットワーク機器で使用することを想定し、スクリプト内のコマンド構造は、Cisco IOSでよく使われる形式とします。例えば、「configure terminal」は、グローバルコンフィギュレーションモードに入るコマンドです。このスクリプトを使うと、複数の機器に対して一括で設定を適用することができます。


import openpyxl

# Excelファイルを読み込み wb = openpyxl.load_workbook(’network_config.xlsx’) sheet = wb.active
# 各デバイスの設定スクリプトを生成 for row in sheet.iter_rows(min_row=2, values_only=True): device_name, ip, subnet, gateway, vlan = row script = f""" configure terminal interface vlan {vlan} ip address {ip} {subnet} exit ip route 0.0.0.0 0.0.0.0 {gateway} exit """ print(f"Generated script for {device_name}:\\n{script}")

以下のようにスクリプトとして出力されるので、これをネットワーク機器に対して実行します。


Generated script for Router1:

configure terminal interface vlan 10 ip address 192.168.1.1 255.255.255.0 exit ip route 0.0.0.0 0.0.0.0 192.168.1.254 exit
Generated script for Switch1:
configure terminal interface vlan 20 ip address 192.168.1.2 255.255.255.0 exit ip route 0.0.0.0 0.0.0.0 192.168.1.254 exit
ステータスレポートの自動生成

ネットワーク機器のステータスをチェックし、その結果をExcelファイルにまとめることもできます。これにより、定期的なレポートを自動で作成できるので、運用管理が容易になります。


import openpyxl

# ステータス情報の更新(仮想的なデータとして) status_data = [ [’Router1’, ’192.168.1.1’, ’Up’], [’Switch1’, ’192.168.1.2’, ’Down’] ]
sheet = wb.create_sheet("network_status_report") sheet.append([’Device Name’, ’IP Address’, ’Status’])
for status in status_data: sheet.append(status)
wb.save(’network_status_report.xlsx’)

fig02

3. まとめ

このように、OpenPyXLを使用することで、ネットワーク自動化に必要な情報の管理や設定の自動化を簡素化し、運用をより効率的に行うことが可能になります。

次回は、これまでに取り上げたネットワーク機器を操作するためのNetmikoやNAPALMなどのライブラリとOpenPyXLを組み合わせ、実際のネットワーク環境でどのように活用するかについて、具体的な応用例をさらに詳しく掘り下げていきます。どうぞお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes