見出し画像

Python ネットワーク自動化のライブラリ一覧

 昨今のネットワーク業界では手動での機器操作だけでなく、プログラミングを用いた機器操作を行う、自動化の流れが流行りつつあります。そこで今回は、プログラミング言語の1つである、Pythonのネットワーク関係ライブラリを見ていきたいと思います。

A.Pythonのネットワーク関連ライブラリ一覧

  1. telnetlib

  2. paramiko

  3. netmiko

  4. pexpect

  5. NAPALM

  6. TextFSM(ntc-templates)

  7. pyATS

  8. ipaddress

  9. Scapy


B.各ライブラリの概要

1.telnetlib

telnetlibはネットワーク機器にリモート接続し、操作を行うためのライブラリです。接続方法はtelnetのみとなり、ネットワーク機器に接続しコマンド入力を行うことができます。Cisco以外のメーカにも対応しており、マルチベンダーのライブラリとなっています。
公式ドキュメント

2.paramiko

paramikoは Python の SSH ライブラリです。接続方法はsshのみとなり、ネットワーク機器に接続しコマンド入力を行うことができます。Cisco以外のメーカにも対応しており、マルチベンダーのライブラリとなっています。
公式ドキュメント

3.netmiko

netmikoは、paramikoをベースに開発され、ネットワークデバイスの操作をシンプルに書けるライブラリです。ネットワーク機器にリモート接続し、操作を行うためのライブラリです。sshやtelnetでネットワーク機器に接続しコマンド入力を行うことができます。Cisco以外のメーカにも対応しており、マルチベンダーのライブラリとなっています。
公式ドキュメント

4.pexpect

pexpectはネットワーク機器にリモート接続し、操作を行うためのライブラリです。sshやtelnetでネットワーク機器に接続しコマンド入力を行うことができます。また、インタラクティブ(対話的)な操作を可能としています。Cisco以外のメーカにも対応しており、マルチベンダーのライブラリとなっています。
公式ドキュメント

5.NAPALM

NAPALMは機器へのリモート接続に加え、コマンド結果のパース機能を備えています。パースとはネットワーク機器のshowコマンド取得結果はそのままだと機械処理に向いていないので、parserなどを使って機械処理に向いたデータに変換する処理のことです。対応メーカーには限りがありますが、複数メーカーのコマンド差を吸収し、共通したコマンドにて情報を取得することができます。
公式ドキュメント

6.TextFSM(ntc-templates)

TextFSM(ntc-templates)はパーサーの集合体で、様々なメーカのコマンドをパースするためのパーサーが多数、まとめられているものです。また、対応するパーサーがない場合、自作することも可能になっています。
公式ドキュメント

7.pyATS

Python Automated Test System の略で、Ciscoの開発部門のテスト工程で使われていたフレームワークです。それがオープンソースとなり2017年から一般に公開されたものです。機能としては対象機器への接続、設定変更、ログ取得、ログ比較等、大抵のネットワーク機器の操作を行うことができます。
公式ドキュメント

8.ipaddress

pythonにてipaddressの処理を簡単に行うためのライブラリです。ipv4 or ipv6の判断や所属ネットワークの判断、該当ネットワークのアドレス出力など様々な機能を備えています。
公式ドキュメント

9.Scapy

Scapyはパケットの生成、送信を行えるライブラリーです。通信のテストや計測等に利用できます。
公式ドキュメント

C.まとめ

ざっくり洗い出しただけでも10個弱のライブラリーがありました。コンフィグ操作に関連して、ファイル操作関係(Excel、CSV、JSON等)のライブラリーも含めればより数が増えてくるのかなと思います。機会に応じて1つ1つのライブラリの使い方をまとめていきたいと思います。


この記事が気に入ったらサポートをしてみませんか?