Verwenden Sie Junos PyEZ, um die Kandidatenkonfiguration und eine zuvor festgeschriebene Konfiguration zu vergleichen
ZUSAMMENFASSUNG Verwenden Sie Junos PyEZ diff()
und pdiff()
Methoden, um die Kandidatenkonfiguration mit einer zuvor festgeschriebenen Konfiguration zu vergleichen.
Auf Junos-Geräten werden eine Kopie der zuletzt festgeschriebenen Konfiguration und bis zu 49 vorherige Konfigurationen gespeichert. Mit dem Dienstprogramm Junos PyEZ jnpr.junos.utils.config.Config
können Sie die Kandidatenkonfiguration mit einer zuvor festgeschriebenen Konfiguration vergleichen und die Differenz ausdrucken oder zurückgeben. In Tabelle 1 werden die Methoden beschrieben, die der Ausgabe des show | compare rollback n
Befehls "Konfigurationsmodus" in der Junos OS CLI entsprechen.
Methode |
Beschreibung |
---|---|
Vergleichen Sie die Kandidatenkonfiguration mit der angegebenen Rollback-Konfiguration, und geben Sie die Differenz als Objekt zurück. |
|
Vergleichen Sie die Kandidatenkonfiguration mit der angegebenen Rollback-Konfiguration, und geben Sie die Differenz direkt in der Standardausgabe aus. |
In der Datenbank für flüchtige Konfigurationen wird nur die aktuelle Version der festgeschriebenen kurzlebigen Konfigurationsdaten gespeichert, weshalb der Vergleich der geänderten kurzlebigen Konfiguration mit zuvor festgeschriebenen Konfigurationen nicht unterstützt wird.
Die diff()
and-Methode pdiff()
ruft die Differenz zwischen der Kandidatenkonfiguration und einer zuvor festgeschriebenen Konfiguration ab, auf die durch den Rollback-ID-Parameter verwiesen wird, rb_id
im Methodenaufruf. Wenn der Parameter weggelassen wird, wird die Rollback-ID standardmäßig auf 0 gesetzt, was der aktiven Konfiguration entspricht.
Die Differenz wird im Patch-Format zurückgegeben, wobei:
Anweisungen, die nur in der Kandidatenkonfiguration vorhanden sind, wird ein Pluszeichen (+) vorangestellt
Anweisungen, die nur in der Vergleichskonfiguration und nicht in der Kandidatenkonfiguration vorhanden sind, wird ein Minuszeichen (-) vorangestellt.
Die Methoden werden zurückgegeben oder gedruckt
None
, wenn es keinen Unterschied zwischen den Konfigurationen gibt.
In einer Junos PyEZ-Anwendung können Sie nach dem Herstellen einer Verbindung mit dem Gerät die diff()
or-Methode pdiff()
für ein Config
or Table-Objekt aufrufen, um die Kandidaten- und Rollback-Konfigurationen zu vergleichen. Im folgenden Beispiel wird die Config
Klasse verwendet, um Konfigurationsänderungen in die Kandidatenkonfiguration zu laden, und dann wird die pdiff()
Methode aufgerufen, um die Unterschiede zwischen der geänderten Kandidatenkonfiguration und der aktiven Konfiguration auszugeben, bevor ein Commit für die Änderungen ausgeführt wird.
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()
Wenn Sie den Code ausführen, werden die Unterschiede in der Standardausgabe ausgegeben. Zum Beispiel:
[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; - } - } - }
Um die Differenz zwischen den Konfigurationen als Objekt für die weitere Bearbeitung abzurufen, rufen Sie die diff()
Methode anstelle der pdiff()
Methode auf, und speichern Sie die Ausgabe in einer Variablen. Zum Beispiel:
cdiff = cu.diff(rb_id=2) print (cdiff)
Wenn Sie Junos PyEZ-Konfigurationstabellen und -ansichten verwenden, um strukturierte Konfigurationsänderungen auf einem Gerät vorzunehmen, können Sie die Konfigurationsdaten laden und festschreiben, indem Sie entweder die lock()
Methoden , load()
und commit()
unlock()
und einzeln aufrufen oder indem Sie die set()
Methode aufrufen, die alle diese Methoden automatisch aufruft. Wenn Sie Konfigurationstabellen verwenden, um ein Gerät zu konfigurieren, und Sie die aktualisierte Kandidatenkonfiguration mit einer zuvor festgeschriebenen Konfiguration vergleichen möchten, indem Sie die diff()
oder-Methoden pdiff()
in Ihrer Anwendung verwenden, müssen Sie die load()
and-Methoden commit()
anstelle der set()
Methode verwenden. Auf diese Weise können Sie die Unterschiede abrufen, nachdem die Konfigurationsdaten in die Kandidatenkonfiguration geladen wurden, aber bevor sie festgeschrieben wurde. Zum Beispiel:
from jnpr.junos import Device from myTables.ConfigTables import UserConfigTable with Device(host='router1.example.com') as dev: with UserConfigTable(dev, mode='exclusive') as userconf: userconf.user = 'user1' userconf.class_name = 'read-only' userconf.append() userconf.load(merge=True) userconf.pdiff() userconf.commit()
Im folgenden Beispiel wird die Kandidatenkonfiguration mit der Konfiguration mit der Rollback-ID 5 verglichen, es werden jedoch keine Änderungen an der Konfiguration vorgenommen:
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)