PyEZ#
PyEZライブラリについて#
PyEZは、Juniperデバイスの自動化、監視、構成管理を簡単にするためのPythonライブラリであり、Juniper Networksが提供しています。 PyEZを使用することで、Pythonを使用してJuniperデバイスに対して様々な操作を行うことができます。
以下は、PyEZライブラリの主な機能です。
Juniperデバイスへの接続と制御 Junos OSのコマンドの送信と出力の取得 Junos OSの設定の読み取り、変更、削除 イベント通知とトリガーの設定 デバイスの状態の監視と収集 また、PyEZはJinja2と組み合わせて使用することができ、Juniperデバイスの構成ファイルを自動生成することができます。
PyEZライブラリは、Junos OSバージョン10.4以降のすべてのJuniperデバイスでサポートされています。詳細なドキュメントは、Juniper NetworksのWebサイトで入手できます。
使用例:#
以下は、JuniperルーターからXML形式の"show chassis hardware"出力を取得して解析するPythonコードの例です。
前提条件: - JuniperルーターにSSHまたはTELNETでアクセスできること。 - PyEZライブラリがインストールされていること。
Tip
- CLIで xml 形式の情報取得方法は
show interfaces terse | display xml
from jnpr.junos import Device
from jnpr.junos.exception import ConnectError
from lxml import etree
# Juniperルーターのホスト名、ユーザー名、パスワードを指定します。
hostname = 'router1.example.com'
username = 'user1'
password = 'password1'
# Juniperルーターに接続します。
try:
with Device(host=hostname, user=username, password=password) as dev:
# "show chassis hardware"コマンドを実行します。
hardware_xml = dev.rpc.get_chassis_inventory()
# XMLを解析します。
root = etree.fromstring(etree.tostring(hardware_xml))
items = root.findall('.//{*}chassis/*')
# 必要な情報を取得します。
for item in items:
fpc = item.findtext('.//{*}description').split()[-1]
pic = item.findtext('.//{*}name').split('/')[-1]
pic_type = item.findtext('.//{*}description').split()[0]
serial_number = item.findtext('.//{*}serial-number')
description = item.findtext('.//{*}description')
# 解析した情報を出力します。
print(f"FPC: {fpc}")
print(f"PIC: {pic}")
print(f"PIC Type: {pic_type}")
print(f"Serial Number: {serial_number}")
print(f"Description: {description}")
except ConnectError as err:
print(f"Cannot connect to device: {err}")
この例では、Juniperルーターに接続し、"show chassis hardware"を実行してXMLを取得し、必要な情報を解析して出力しています。 Junos PyEZライブラリは、XML RPC呼び出しを使用してJuniperデバイスに接続するためのPythonライブラリです。 必要に応じて、この例を変更して必要な情報をファイルに保存することもできます。