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

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

研修コース検索

コラム

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

CTC 教育サービス

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

第36回 ネットワーク自動化実践レシピ(8)ダッシュボードの作成(3) (小澤昌樹) 2025年7月

みなさん、こんにちは。

これまでの回で、ネットワーク機器から定期的に情報を取得し、そのデータをSQLiteデータベースに蓄積する仕組みを構築しました。今回はその次のステップとして、「収集したデータをレポートとしてExcel形式で出力する方法」について解説します。

今回のステップは、ネットワーク管理の現場において非常に重要な作業です。エンジニアはコマンドラインやデータベースで確認することが一般的ですが、上司や他部門と情報を共有する場合には、視覚的に分かりやすい形式でのドキュメントやレポートが求められます。Excel形式はレポートの代表格で、あらゆる用途に応用できます。

1.出力の目的

Excelでのレポート出力は、次のような目的で活用します。

  • 上長や関係部門への定期報告(例:月次のネットワーク稼働状況の報告)
  • 管理記録としての保存(例:年度末の情報監査)
  • トラブル時の証跡(例:ネットワークパフォーマンスの推移)
  • 異常を可視化するための分析資料(例:トラフィック分析)

用途に応じて、レポートの構成は柔軟に変えましょう。今回は、基本的な出力方法として、「1日分の監視データを1つのExcelファイルに出力」する形を紹介します。

2.必要なライブラリ

今回は、主に次の2つのライブラリを使用します。

  • sqlite3:Python標準ライブラリで、SQLiteデータベースにアクセスするライブラリ
  • openpyxl:Excelファイルの読み書きを行うライブラリ

openpyxl をインストールしていない場合は、事前に、以下のコマンドでインストールしておきましょう。


pip install openpyxl
3.Excelファイルへの出力

それでは、実際にレポートを作成するPythonスクリプトを紹介しましょう。このスクリプトでは、前回保存したSQLiteデータベース(network_monitor.db)から当日分のデータを取得し、それを「network_report_日付.xlsx」として出力します。


import sqlite3
from openpyxl import Workbook
from datetime import datetime

# 日付フィルタ(今日の日付) today_str = datetime.now().strftime(’%Y-%m-%d’)
# データベース接続 conn = sqlite3.connect(’network_monitor.db’) cur = conn.cursor()
# デバイスごとにレポートを出力 cur.execute(’’’ SELECT id, hostname, ip_address, timestamp, cpu_usage, memory_usage FROM device_status WHERE timestamp LIKE ? ’’’, (f’{today_str}%’,))
rows = cur.fetchall()
# Excel ワークブックの作成 wb = Workbook() ws = wb.active ws.title = ’Device Summary’ ws.append([’日時’, ’ホスト名’, ’IPアドレス’, ’CPU使用率(%)’, ’メモリ使用率(%)’])
for row in rows: ws.append([row[3], row[1], row[2], round(row[4], 1), round(row[5], 1)])
# インターフェース統計も別シートに出力 ws2 = wb.create_sheet(title=’Interface Traffic’) ws2.append([’日時’, ’ホスト名’, ’インターフェース名’, ’送信バイト’, ’受信バイト’])
for device_id, hostname, ip, timestamp, *_ in rows: cur.execute(’’’ SELECT interface_name, tx_bytes, rx_bytes FROM interface_traffic WHERE device_id = ? ’’’, (device_id,)) intf_rows = cur.fetchall() for intf_row in intf_rows: ws2.append([timestamp, hostname, intf_row[0], intf_row[1], intf_row[2]])
# 保存 filename = f’network_report_{today_str}.xlsx’ wb.save(filename) conn.close()
print(f’レポート出力完了: {filename}’)

このスクリプトのポイントは以下です。

  • 当日分のデータのみを抽出し、レポートを日付単位で生成。
  • 複数のシートを活用し、「デバイス概要」と「インターフェース統計」を分けて記録。
  • interface_traffic テーブルと device_status テーブルを結び付けて、機器ごとの詳細を追跡可能に。
  • 数値を round() で丸めて、読みやすい表示に調整。
4.レポートの改善ポイント

上記のスクリプトはExcelでのレポート出力の基本形です。この基本形から、例えば以下のような応用を加えると実用性を高められます。

  • グラフの追加
    openpyxl.chart を使って、CPU使用率の推移グラフを追加することで、視覚的に異常傾向が見やすくなります。
  • 複数日付の出力
    スクリプトの timestamp LIKE の部分を BETWEEN に書き換えることで、指定期間のレポートを作成可能です。
  • 複数機器対応
    ホスト名ごとにシートを分ける、ファイルを分割するなどの方法で管理の粒度を調整できます。
  • 共有用フォルダへの自動保存
    ファイル保存先をネットワーク共有フォルダに設定しておけば、チーム全体で閲覧可能になります。

また、以下のような注意点もあります。必要に応じて改善が必要です。

  • データベースのスキーマ変更があった場合は、スクリプトも追従(修正)させる必要があります。
  • 実行環境に依存するパスや文字コードの扱いに注意し、日本語を含むファイル名・内容もUTF-8で統一するのが望ましいです。
  • Excelファイルはサイズが大きくなりやすいため、長期間分を1ファイルに詰め込むのではなく、日ごとや週ごとといった単位で分割した方がよいでしょう。
5.まとめ

今回は、SQLiteに保存されたネットワーク情報をExcel形式のレポートとして出力する方法を解説しました。シンプルなデータベース操作とOpenPyXLを組み合わせることで、日々の業務に役立つドキュメントを自動生成できます。このような仕組みを整えておくことで、定期報告やトラブル時の対応が格段に効率化されるだけでなく、情報の蓄積と活用によってネットワーク全体の健全性を長期的に維持できる基盤を作ることができます。

次回(第4回)は、これらの収集スクリプトや出力処理を「定期的に自動実行」する仕組みとして、cron や Windows タスクスケジューラなどを用いた自動化の仕組みづくりを解説します。どうぞお楽しみに。

 

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