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

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

研修コース検索

コラム

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

CTC 教育サービス

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

第27回 OpenPyXLライブラリ(7)実例③ (小澤昌樹) 2024年12月

はじめに

みなさん、こんにちは。

前回は、ネットワーク管理における運用を効率化するために、Excelファイルを活用してネットワーク機器の設定情報を管理し、それを基にスクリプトを自動生成する方法を紹介しました。

今回からは、これまでに紹介してきたNetmikoやNAPALMといったネットワーク機器操作ライブラリと、OpenPyXLを組み合わせ、実際のネットワーク環境で効率的な運用を行う方法を紹介します。デバイス設定の一括適用、設定のバックアップ、自動化されたデータ収集やレポート作成など、具体的な応用例を通じて、ネットワーク管理がよりスムーズに行えることを目指します。

今回紹介するのは、デバイス設定の一括適用、デバイス情報の収集とExcelへの出力、パスワードの一括更新の3つです。

デバイス設定の一括適用
  1. シナリオ
    複数のネットワーク機器に対して、共通または個別の設定を一括で適用したい。
  2. 実装方法
    • OpenPyXLでExcelファイルからデバイス情報(IPアドレス、認証情報、適用するコマンドなど)を読み取ります。
    • Netmikoを使用して各デバイスにSSH接続し、設定コマンドを送信します。Netmikoは、ネットワーク機器に対してSSH接続を行い、コマンドの送信や設定の適用を自動化できるライブラリです。
  3. コード例
    
    import openpyxl
    from netmiko import ConnectHandler
    
    # Excelファイルの読み込み。このExcelファイルに、ネットワーク機器の接続情報や設定コマンドが記載されている。 wb = openpyxl.load_workbook(’device_configs.xlsx’) sheet = wb.active
    # デバイスごとにループ処理 # min_row=2: 2行目以降を対象 # values_only=True: セルの値だけを返す # 各行の値は、ip_address(IPアドレス)、username(ユーザー名)、password(パスワード)、device_type(デバイスタイプ)、commands(実行コマンド) for row in sheet.iter_rows(min_row=2, values_only=True): ip_address, username, password, device_type, commands = row
    # Netmikoが接続するための情報を辞書型で定義 device = { ’device_type’: device_type, ’host’: ip_address, ’username’: username, ’password’: password, }
    # デバイスに接続 # **deviceにより、前述の辞書が展開されてNetmikoに渡される net_connect = ConnectHandler(**device) # コマンドをリストに変換(;で区切られていると仮定) config_commands = commands.split(’;’) # 設定コマンドを送信 net_connect.send_config_set(config_commands) net_connect.disconnect()
デバイス情報の収集とExcelへの出力
  1. シナリオ
    ネットワーク機器からインターフェースの状態やルーティングテーブルなどを収集し、Excelファイルにまとめたい。
  2. 実装方法
    • NAPALMで各デバイスから必要な情報を取得します。NAPALMでは、get_network_driverを使用して、対応するデバイスのドライバを取得します。
    • OpenPyXLで取得した情報をExcelファイルに書き込みます。
  3. コード例
    
    import openpyxl
    from napalm import get_network_driver
    
    # ネットワーク機器の接続情報を保持するリスト devices = [ {’hostname’: ’192.168.1.1’, ’username’: ’admin’, ’password’: ’admin123’, ’platform’: ’ios’}, # 必要に応じて他のデバイスを追加 ]
    # 新規Excelワークブックの作成 wb = openpyxl.Workbook() sheet = wb.active sheet.title = ’Interface Statuses’
    # ヘッダーの書き込み # 「Hostname(ホスト名)」、「Interface(インターフェース名)」、「Status(状態)」、「Description(説明)」 sheet.append([’Hostname’, ’Interface’, ’Status’, ’Description’])
    # 各デバイスから情報を取得 for device_info in devices: driver = get_network_driver(device_info[’platform’]) device = driver(device_info[’hostname’], device_info[’username’], device_info[’password’]) # ネットワークデバイスにSSHを使って接続 device.open() # 接続したデバイスからインターフェース情報を取得 interfaces = device.get_interfaces() for interface_name, interface_details in interfaces.items(): # インターフェース情報をExcelシートの次の行に追加 sheet.append([ device_info[’hostname’], interface_name, ’Up’ if interface_details[’is_up’] else ’Down’, interface_details.get(’description’, ’’) ]) device.close()
    # Excelファイルの保存 wb.save(’interface_statuses.xlsx’)
パスワードの一括更新
  1. シナリオ
    複数のネットワーク機器のパスワードを一括で変更したい。
  2. 実装方法
    • OpenPyXLでデバイスリストと新旧のパスワードを読み取ります。
    • Netmikoで各デバイスに接続し、パスワード変更コマンドを実行します。
  3. コード例
    
    import openpyxl
    from netmiko import ConnectHandler
    
    # Excelファイルの読み込み wb = openpyxl.load_workbook(’device_list.xlsx’) sheet = wb.active
    # デバイスごとにループ処理 # 各行の値は、ip_address(IPアドレス)、username(ユーザー名)、old_password(旧パスワード)、new_password(新パスワード)、device_type(デバイスの種類) for row in sheet.iter_rows(min_row=2, values_only=True): ip_address, username, old_password, new_password, device_type = row
    device = { ’device_type’: device_type, ’host’: ip_address, ’username’: username, ’password’: old_password, }
    net_connect = ConnectHandler(**device) # パスワード変更コマンドの送信(機器によってコマンドは異なる) # ここでは、デバイスタイプがCiscoのIOSである場合に、特定のコマンドを実行する処理を行う if device_type == ’cisco_ios’: commands = [ f’username {username} secret {new_password}’ ] net_connect.send_config_set(commands) net_connect.disconnect()
まとめ

今回は、ネットワーク機器の設定適用、データ収集、パスワード変更といったネットワーク管理における重要な作業を効率化するための3つのシナリオを紹介しました。これらの自動化により、ネットワーク管理の作業負荷が軽減され、ヒューマンエラーを防ぎつつ、迅速かつ正確な運用が可能になります。
次回は、ネットワーク管理のさらなる自動化を目指し、デバイス設定の自動バックアップや設定コンフィグのチェックといった高度な運用方法について紹介していきます。どうぞお楽しみに。

 


 

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