ウェブサイト検索

Paramiko と Netmiko を使用した Python でのネットワーク タスクの簡素化


今日の相互接続された世界では、コンピュータ ネットワークは通信とデータ交換を促進する上で重要な役割を果たしています。ネットワークが複雑になるにつれて、ネットワーク タスクの管理と自動化がますます重要になります。 Python は、そのシンプルさと多用途性により、ネットワーク自動化のための強力なプログラミング言語として登場しました。この記事では、ネットワーク タスクを簡素化し、効率的なネットワーク自動化を可能にする 2 つの人気のある Python ライブラリ、Paramiko と Netmiko について説明します。

パラミコを理解する

SSH プロトコルを使用した安全なネットワーク デバイス通信を自動化および簡素化するために、Paramiko Python ライブラリが開発されました。ネットワーク ハードウェアと対話するために、SSH 接続のセットアップ、コマンドの実行、ファイルの送信、認証の処理を簡単にする高レベル API が提供されます。ネットワーク自動化タスクに最適なソリューションは、信頼性とシンプルさの点で Paramiko です。

Paramiko を使い始めるには、pip を使用してインストールする必要があります。

pip install paramiko

パラミコの主な特徴

  • SSH 接続: Paramiko を使用してネットワーク デバイスとの SSH 接続を作成できます。これにより、コマンドを実行したり、ファイルを安全に送信したりできます。キーベースとパスワードベースの両方の認証技術がサポートされています。

    Paramiko の SSHClient クラスを使用すると、SSH 経由で遠くのデバイスに接続できます。接続プロセス中に、潜在的な例外を処理し、ホスト キーを自動的に追加するためのポリシーを設定できます。

  • コマンドの実行: Paramiko を使用してネットワークに接続されたデバイスにコマンドを発行し、結果を取得できます。この機能は、診断の実行、反復的なタスクの自動化、デバイス情報の取得に特に役立ちます。

    SSHClient クラスの exec_command() メソッドを使用して、Paramiko を通じてコマンドを実行できます。 Stdin、Stdout、および Stderr は、このメソッドが返す 3 つのファイルのようなオブジェクトです。コマンドの出力は stdout で表示でき、エラーは stderr で対処できます。

  • ファイル転送: SFTP (Secure File Transfer Protocol) を使用して、Paramiko はローカル デバイスとネットワーク デバイス間のファイル転送を可能にします。この機能により、ログ ファイルのダウンロードや構成ファイルのアップロードなどの単純なタスクが簡単になります。

    ファイル転送タスク用に、Paramiko は SFTPClient クラスを提供します。リモート デバイスとの間でファイルを転送するには、put() や get() などのメソッドを使用できます。

ネットミコの紹介

Paramiko 上に構築されたマルチベンダー ライブラリである Netmiko により、ネットワークの自動化がさらに簡単になります。ベンダーやオペレーティング システムに関係なく、さまざまなネットワーク デバイスと通信するための統合 API を提供します。 Netmiko がサポートする多くのデバイスには、Cisco、Juniper、Arista、Huawei、その他のメーカーのデバイスが含まれます。

Netmiko をインストールするには、pip を使用できます。

pip install netmiko

Netmiko を使用してネットワーク タスクを簡素化する

Netmiko がネットワーク デバイスの違いを抽象化した結果、さまざまなベンダー間で一貫して機能するネットワーク自動化スクリプトを作成できます。 Netmiko の顕著な特徴は次のとおりです。

  • デバイス接続: ネットワーク デバイスに接続するための簡単で信頼性の高い方法が Netmiko によって提供されます。 SSH 接続を確立するには、デバイスの IP アドレス、ユーザー名、パスワード、およびオプションの SSH ポートをすべて指定する必要があります。

    接続を確立するときに、Netmiko がサポートするデバイスの種類を指定するオプションがあります。たとえば、Cisco IOS デバイスの場合、デバイス タイプとして「cisco_ios」を指定できます。

  • コマンドの実行: send_command() メソッドを使用すると、ネットワーク デバイスにコマンドを送信できます。 Netmiko が SSH 接続とコマンド実行を処理する方法のおかげで、コマンド出力の取得は簡単です。

    コマンドはパラメーターとして渡され、出力は send_command() メソッドによって文字列として返されます。 send_command_timing() や send_command_expect() などの追加の Netmiko メソッドは、対話型コマンドを処理し、特定のプロンプトが受信されるまで出力を保持します。

  • 構成管理: Netmiko の send_config_from_file() メソッドを使用すると、構成管理が簡単になります。デバイス構成は個別のファイルに保存でき、Netmiko を使用してこれらの構成をデバイスに一貫して適用できます。

    この機能を利用すると、VLAN の追加、インターフェイスの設定、アクセス コントロール リストの変更などの設定タスクを自動化できます。構成をファイルに保存することで、ネットワーク構成の管理とバージョン管理を簡単に行うことができます。

  • 出力の解析: コマンド出力を解析するために、Send_command_timing() と send_command_expect() が Netmiko に組み込まれています。これらの技術は対話型コマンドを管理し、特定のプロンプトのセットが発行されるまで出力を保持します。

    コマンド出力の解析は、関連データを取得し、出力に基づいて追加の操作を実行するために不可欠です。 Netmiko は、さまざまなプロンプトやシナリオを処理できるメソッドを提供することで、難しいタスクの自動化を容易にします。

例: デバイス情報の取得

Paramiko と Netmiko を使用してネットワーク デバイスからデバイス情報を取得する実際の例を見てみましょう。

import paramiko
from netmiko import ConnectHandler

# Paramiko SSH connection
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.0.1', username='admin', password='password')

# Netmiko connection
device = {
    'device_type': 'cisco_ios',
    'ip': '192.168.0.1',
    'username': 'admin',
    'password': 'password',
}

net_connect = ConnectHandler(**device)

# Retrieve device information using Paramiko
stdin, stdout, stderr = ssh.exec_command('show version')
output = stdout.read().decode()

print(output)

# Retrieve device information using Netmiko
output = net_connect.send_command('show version')

print(output)

# Close connections
ssh.close()
net_connect.disconnect()

この例では、Paramiko と Netmiko を使用して SSH 接続を確立し、デバイスのバージョン情報を取得します。どちらの方法でも同様の機能が提供されますが、Netmiko は SSH 接続の詳細を抽象化し、統合された API を提供することでプロセスを簡素化します。

結論

Paramiko と Netmiko は、ネットワーク タスクを簡素化し、効率的なネットワーク自動化を可能にする強力な Python ライブラリです。 SSH 接続の確立、コマンドの実行、ファイルの転送、構成の管理が必要な場合でも、これらのライブラリは高レベルの抽象化と一貫した API を提供します。これらの機能を活用することで、ネットワーク自動化ワークフローを合理化し、手作業を軽減できます。 Paramiko と Netmiko をネットワーク自動化の武器庫に組み込むと、複雑なネットワーク タスクを簡素化および自動化できるようになり、Python がネットワーク管理者やエンジニアにとって貴重なツールになります。したがって、Python でネットワーク タスクを簡素化し、ネットワーク自動化の可能性を最大限に引き出すために、Paramiko と Netmiko の探索を開始してください。