Junos PyEZ を使用して候補の設定と以前にコミットされた設定を比較する
概要 Junos PyEZ diff()
およびメソッドを使用して、候補のコンフィギュレーションを以前にコミットされたコンフィギュレーションと pdiff()
比較します。
Junos デバイスには、直近にコミットされた設定と、最大 49 個の以前の設定のコピーが保存されます。Junos PyEZ jnpr.junos.utils.config.Config
ユーティリティを使用すると、候補のコンフィギュレーションを以前にコミットしたコンフィギュレーションと比較したり、その差分を印刷したりすることができます。 表 1 は、Junos OS CLI で設定モード コマンドを発行する show | compare rollback n
のと同等の方法の概要を示しています。
一時的な設定データベースには、コミットされた一時的な設定データの現在のバージョンのみが保存され、その結果、変更された一時的な設定と以前にコミットされた設定の比較はサポートされません。
と pdiff()
のメソッドはdiff()
、メソッド呼び出しで、ロールバックIDパラメーターrb_id
、、 、によって参照される候補の設定と以前にコミットされた設定の違いを取得します。パラメーターを省略した場合、ロールバックIDのデフォルトは0で、アクティブまたは最後にコミットされた設定に対応します。
この違いは、パッチ形式で返されます。
候補構成にのみ存在するステートメントには、プラス記号(+)がプレフィックスとして付けられます。
比較設定にのみ存在し、候補コンフィギュレーションには存在しないステートメントのプレフィックスにはマイナス記号(-)が付けられます。
コンフィギュレーションに違いがない場合は、メソッドが戻されるか、印刷
None
されます。
Junos PyEZ アプリケーションでは、デバイスとの接続を確立した後、 または Table オブジェクトの diff()
または pdiff()
メソッド Config
を呼び出して、候補とロールバックの設定を比較できます。次の例では、クラスを Config
使用して設定変更を候補コンフィギュレーションに読み込み、変更を pdiff()
コミットする前にメソッドを呼び出して、変更された候補コンフィギュレーションとアクティブ・コンフィギュレーションの差異を出力します。
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: with Config(dev, mode='exclusive') as cu: cu.load(path='configs/junos-config-mx.conf', merge=True) cu.pdiff() cu.commit()
コードを実行すると、差異が標準出力に印刷されます。例えば:
[edit system scripts op] + file bgp-neighbors.slax; [edit interfaces] + ge-1/0/0 { + unit 0 { + family inet { + address 198.51.100.1/26; + } + } + } - ge-1/1/0 { - unit 0 { - family inet { - address 198.51.100.65/26; - } - } - }
さらに操作を行うために、オブジェクトとしてのコンフィギュレーションの違いを取得するには、メソッドの代わりにメソッドをpdiff()
呼び出diff()
し、出力を変数に格納します。例えば:
diff = cu.diff(rb_id=2) print (diff)
Junos PyEZ 設定テーブルとビューを使用してデバイス上で構造化された設定変更を行う場合、個別に 、 および unlock()
load()
commit()
メソッドを呼び出すか、メソッドを呼び出lock()
してこれらのメソッドをすべて自動的に呼び出set()
すことで、設定データを読み込んでコミットできます。コンフィギュレーション・テーブルを使用してデバイスを設定し、更新された候補コンフィギュレーションを、アプリケーションのまたはpdiff()
メソッドを使用してdiff()
以前にコミットされたコンフィギュレーションと比較したい場合は、メソッドの代わりに および commit()
メソッドをset()
使用load()
する必要があります。これにより、設定データが候補コンフィギュレーションに読み込まれた後、コミットされる前に相違点を取得することができます。例えば:
from jnpr.junos import Device from myTables.ConfigTables import UserConfigTable with Device(host='router1.example.com') as dev: with UserConfigTable(dev, mode='private') as userconf: userconf.user = 'user1' userconf.class_name = 'read-only' userconf.append() userconf.load(merge=True) userconf.pdiff() userconf.commit()
次の例では、候補コンフィギュレーションをロールバックID 5のコンフィギュレーションと比較しますが、設定に変更を加えることはありません。
from jnpr.junos import Device from jnpr.junos.utils.config import Config with Device(host='router1.example.com') as dev: cu = Config(dev) cu.pdiff(rb_id=5)