Blog Brocade Japan

PyNOSを使ってみよう

by Ken Sugai on ‎04-21-2016 06:15 PM - last edited on ‎02-26-2017 07:08 PM by aokuhara (1,918 Views)

PyNOSの概要

 

PyNOSはNETCONFを使ってNOSにアクセスします。 NETCONFプロトコル処理はncclientパッケージを利用しており、その上位でVDX/NOS固有のセマンティクスをPyNOSが実装しています。

PyNOSはpyPIGitHubで公開しています。利用だけでなくコントリビュートも歓迎します!

 

PyNOSを使う準備

 

PythonとPyNOSのインストールはとても簡単ですが、ひとつだけ注意すべきことはWindows環境でやらないことです。Windows版Pythonそのものは互換性が高くインストールも簡単ですが、問題はライブラリー(パッケージ)です。PyNOSパッケージをインストールするため pip install pynosを実行すると依存するパッケージもすべて自動的にインストールしようとしますが途中でエラーを吐いて止まります。SSHなど低レベルのパッケージがプラットフォーム依存であるためです。多分やり方はあるのだと思いますがそんな時間をかける値打ちはないのでLinux環境でやりましょう。Oracle VirtualBoxでVMを作って Ubuntuを入れればWindowsラップトップで快適にLinux環境が使えます。 UbuntuならPython 2.7は最初から入っています。sudo apt-get install python-pipでPythonのユーティリティーpipをインストールし、 sudo pip install pynosでPyNOSとすべての必要なパッケージをインストールします。エラーは出ません。これで準備完了です。Pythonを起動しましょう。

 

ken@VB1:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

最後の行の >>>はPythonインタープリターのプロンプトです。ここにPythonのコードを打ってはPyNOSの動作を確認していきましょう。何か実用的な仕事をさせるときはスクリプトにすると思いますが、あれこれ試してみるときはコマンドラインが便利です。

 

Deviceクラスが操作の起点

 

操作しようとするVDXのIPアドレスとログイン情報を引数としてDeviceクラスのオブジェクトを作ります。Deviceオブジェクトは自動的にNOSにログインします。(NETCONFセッションを接続します)。以降すべての操作はこのオブジェクトを起点におこないます。やってみましょう。

 

>>> import pynos.device
>>> conn = ('10.20.30.40', '22')
>>> auth = ('admin', 'password')
>>> dev = pynos.device.Device(conn=conn, auth=auth)

 

エラーが出なければログインに成功しています。念のためDeviceオブジェクトのconnectionメソッドを呼んで接続中かどうか確認してみます。

 

>>> dev.connection
True

 

接続されていました。無操作のまましばらく置いとくと接続が切れるようなので、そういうときの確認にもこのメソッドは便利です。接続が切れていたらreconnectメソッドで再接続できます。IPアドレスやクレデンシャルはDeviceオブジェクトに保存してあるので再接続のときは何も与えなくていいです。

 

>>> dev.reconnect()
True

 

次はSystemクラスを使ってみよう

 

Systemクラスのuptimeメソッドを呼んでみます。

 

>>> dev.system.uptime
{'seconds': '47', 'hours': '0', 'minutes': '24', 'days': '0'}

 

初めてPythonでNOSから情報を取り出せました!

ここでdev.system.uptimeという呼び出し方の意味を説明します。Deviceオブジェクトを作ったとき自動的にSystemなど5つのクラスをインスタンシエートしてDeviceオブジェクトにつなぎ込んであります(下図)。dev.systemとは図の右下のSystemオブジェクトであり、そのuptimeメソッドを呼び出していたのですね。

 

オブジェクトの構成

 

メソッドを全部知りたい

 

pyPIのPyNOSページから、 Package DocumentationModule Index とたどるとPyNOSのモジュールがツリー表示されています(下図)。

 

モジュール一覧

 

パッケージ名がリンクになっていて、その先にメソッドの説明があります。Systemクラスはメソッドが2個しかありませんがInterfaceクラスは使いでがありそうです。

 

1人でも多くの方がPyNOSをとりあえず動かしてみてくれたら嬉しいです。

 

Brocade VDXスイッチはこちら

 

関連リンク

NOS内蔵Python

NOS内蔵PythonとBWCの連携