CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさん、こんにちは。
前回は、ネットワーク管理における運用を効率化するために、Excelファイルを活用してネットワーク機器の設定情報を管理し、それを基にスクリプトを自動生成する方法を紹介しました。
今回からは、これまでに紹介してきたNetmikoやNAPALMといったネットワーク機器操作ライブラリと、OpenPyXLを組み合わせ、実際のネットワーク環境で効率的な運用を行う方法を紹介します。デバイス設定の一括適用、設定のバックアップ、自動化されたデータ収集やレポート作成など、具体的な応用例を通じて、ネットワーク管理がよりスムーズに行えることを目指します。
今回紹介するのは、デバイス設定の一括適用、デバイス情報の収集とExcelへの出力、パスワードの一括更新の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()
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’)
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