Python モジュールとして実行する場合の Python での Junos Snapshot Administrator について
PythonのJunos Snapshot Administrator(jsnapy)を使用すると、Junos® OSを実行しているネットワークデバイスのランタイム環境のスナップショットをキャプチャして監査できます。Jsnapyは、ネットワークサーバー(jsnapyサーバー)のコマンドラインから実行することも、jsnapyサーバー上の他のPythonスクリプト内からモジュールとして呼び出すこともできます。CLI操作の詳細については 、 Pythonの概要の「Junos Snapshot Administrator 」を参照してください。
ネットワークサーバーにインストールすると、jsnapyは他のPythonスクリプトやプログラム内のモジュールとして使用できるようになります。これ以上の構成は必要ありません。Jsnapyは、Pythonスクリプトまたはプログラムのモジュールとして使用される場合、そのすべての機能を保持します。
jsnapy を別の Python スクリプト内のモジュールとして使用するには、まず python import
ステートメントを使用して、Python スクリプトが jsnapy 機能にアクセスできるようにする必要があります。このスクリプトは、スナップショットの操作時にjsnapyだけでなく、Junos OSデバイスの理解にも依存するため、利用可能なJuniper Pythonライブラリであるjnprから異なるモジュールをインポートする、2つの異なるインポートステートメントを作成する必要があります。
from jnpr.jsnapy import SnapAdmin from jnpr.junos import Device
SnapAdminモジュールをインポートすると、スクリプトまたはプログラムは、コマンドラインで使用できるのと同じjsnapyオプションすべてにアクセスできるようになります。スクリプト内で使用する場合、関数は通常、SnapAdmin()
スクリプトの後半で使用するために変数に割り当てられます。使用可能な jsnapy オプションを制御するために、 にSnapAdmin()
引数が渡されます。次の例では、 SnapAdmin を変数js
に代入し、 snap
check
snapcheck
、 、 の 3 つの主要オプションをそれぞれ指定して jsnapy を呼び出します。
SnapAdmin 関数を変数に代入する
js = SnapAdmin()
jsnapyに3回電話する
snapshot = js.snap(config_file, "snapshot_filename") chk = js.check(config_file, snapshot_1, snapshot_2) snapchk = js.snapcheck(config_file, "snapshot_filename")
デバイスモジュールを使用すると、PythonスクリプトでJunos OSデバイスに接続し、ログインし、コマンドを実行できるようになります。接続 IP アドレス、ユーザー名、およびパスワードの引数は、Python スクリプト内からデバイス モジュールを呼び出すときに指定します。たとえば、Python スクリプトの次の行は、スクリプトの後半で使用するために呼び出され device_object
る変数を作成します。
device_object = Device(host='192.0.2.1', user='username', password='password')
上記の引数値として名前が付けられた変数は、さまざまなソースから取得できます。
構成ファイル情報を Python スクリプトに組み込むには、データを格納する変数を作成し、そのデバイスに接続してテストするために必要なすべてのホスト情報とテスト情報を指定します。例えば
config_data = """ hosts: - device: 192.0.2.1 username : username passwd: password tests: - test_exists.yml - test_does_not_contain.yml """
ターゲット デバイスの接続とテストの情報を含む既存の YAML 形式の構成ファイルを指定できます。例えば:
config_file = /etc/jsnapy/samples/config_single_snapcheck.yml
接続用のスクリプト定義デバイス オブジェクトと、既存の YAML 形式のテスト ファイルの一覧を組み合わせて使用して、デバイスをテストできます。たとえば、次の行では、以前に定義したもの
device_object
と、実行するテストの一覧、およびスナップショット ファイルの名前を使用します。js.snapcheck({'tests': ['test_exists.yml', 'test_contains.yml', 'test_is_equal.yml']}, "snapshot_name", dev=device_object)
他のPythonスクリプトまたはプログラム内からjsnapyを実行する場合、さまざまなオプションを使用できます。PythonスクリプティングとJunos OSデバイスの相互作用に精通していることは、何が可能かを学習するのに役立ちます。