全1642文字
PR

 telnetlibを使ってTelnetログインしようとすると、Telnetパスワードの入力などを明示的にコードで記述する必要がある。Netmikoを使えばこうしたログイン処理の記述を簡略化できる(図3-1)。Netmikoでは、パスワードなどの機器設定をコードにあらかじめ記述しておく。これにより、目的のコマンドを実行するとき以外の記述を簡略化できる。

図3-1●Netmikoを使えばログイン処理の記述を簡略化できる
図3-1●Netmikoを使えばログイン処理の記述を簡略化できる
telnetlibを使う場合は個々の入力をいちいち記述する必要がある。これに対し、Netmikoでは初めにパスワードなどの機器設定を記述しておくことで、目的のコマンドの実行以外の記述を簡略化できる。
[画像のクリックで拡大表示]

 Netmikoを利用するには、コードの冒頭でNetmikoライブラリーのConnectHandlerというクラスをインポートする(図3-2)。

図3-2●Netmikoでリモートアクセスしてコマンドを
図3-2●Netmikoでリモートアクセスしてコマンドを
Netmikoを利用する際には、パスワードなどの機器設定を記述し、ConnectHandlerオブジェクトを生成する。Telnetによるアクセスや特権EXECモードへの移行が簡単にできるのが分かる。
[画像のクリックで拡大表示]

 次に機器の設定をPythonの辞書という形式で記述する。ここでは「my_device」という名前にした。「device_type」は機器の種類を表す項目で、Netmikoであらかじめ決められているパラメーターを指定する。例えば、Cisco IOSでTelnetアクセスする場合は「cisco_ios_telnet」になる。こうしたパラメーターが用意されていない機器ではNetmikoは使えない。my_deviceの中ではIPアドレス、Telnetパスワード、特権パスワードも設定している。

 この設定を使ってConnect Handlerオブジェクトを生成する。生成したオブジェクトのメソッドを使って様々な操作が行える。例えば、特権EXECモードに移行するにはenableメソッド、リモートアクセスを終了するにはdisconnectメソッドを実行する。

 コマンドを実行するには、send_commandメソッドの引数としてコマンドの文字列を渡す。ここでは「show ip interface brief」の省略形である「sh ip int b」を実行している。

 Netmikoには「TextFSM」という構造化プログラムを利用できるというメリットもある。コマンドが表示するメッセージを扱いやすくなる。

 TextFSMを利用するには「NTC TEMPLATES」というテンプレート集をダウンロードして組み込む必要がある(図3-3)。様々なコマンドのメッセージに対応したテンプレート集だ。NTC TEM-PLATESのGitHubのページからファイルをダウンロード。これをユーザーフォルダーの直下に置いた「ntc-templates」というフォルダーに入れると、TextFSMで利用できるようになる。

図3-3●NTC TEMPLATESをダウンロード
図3-3●NTC TEMPLATESをダウンロード
Netmikoでは「TextFSM」という構造化プログラムを利用できる。それには「NTC TEMPLATES」というテンプレート集をダウンロードする必要がある。NTC TEMPLATESのGitHubのページ(https://github.com/networktocode/ntc-templates)の「Clone or download」ボタンから「Download ZIP」を選択する。解凍したフォルダーの名前を「ntctemplates」に変更し、ユーザーフォルダーの直下に置く。
[画像のクリックで拡大表示]