telnetlibを使ってTelnetログインしようとすると、Telnetパスワードの入力などを明示的にコードで記述する必要がある。Netmikoを使えばこうしたログイン処理の記述を簡略化できる(図3-1)。Netmikoでは、パスワードなどの機器設定をコードにあらかじめ記述しておく。これにより、目的のコマンドを実行するとき以外の記述を簡略化できる。
Netmikoを利用するには、コードの冒頭でNetmikoライブラリーのConnectHandlerというクラスをインポートする(図3-2)。
次に機器の設定を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で利用できるようになる。