AUF DIESER SEITE
Beispiel: Ändern der Konfiguration mithilfe von SLAX- und XSLT-Op-Skripten
In diesem Beispiel wird erläutert, wie Sie mithilfe eines SLAX-Op-Skripts strukturierte Änderungen an der Junos OS-Konfiguration vornehmen.
Gerätekonfiguration
Schritt-für-Schritt-Anleitung
So laden Sie das Skript herunter, aktivieren es und testen es:
Kopieren Sie das Skript in eine Textdatei, nennen Sie die Datei config-change.slax, und kopieren Sie sie in das Verzeichnis /var/db/scripts/op/ auf dem Gerät.
Konfigurieren Sie im Konfigurationsmodus den Dateinamen des Skripts auf Hierarchieebene
[edit system scripts op file]
.[edit system scripts op] user@host# set file config-change.slax
Geben Sie den Befehl ein, um die Konfiguration zu bestätigen und in den
commit and-quit
Betriebsmodus zurückzukehren.[edit] user@host# commit and-quit
Geben Sie vor dem Ausführen des Skripts den Befehl für den
show interfaces interface-name
Betriebsmodus aus, und notieren Sie sich den aktuellen Status der Schnittstelle, der vom Skript deaktiviert wird.Führen Sie das op-Skript aus.
user@host> op config-change This script disables the interface specified by the user. The script modifies the candidate configuration to disable the interface and commits the configuration to activate it. Enter interface to disable: so-0/0/0
Anforderungen
In diesem Beispiel wird ein Gerät verwendet, auf dem Junos OS ausgeführt wird.
Übersicht und Op-Skript
SLAX- und XSLT-Op-Skripte können mithilfe der jcs:load-configuration
Vorlage in der Importdatei junos.xsl strukturierte Änderungen an der Junos OS-Konfiguration vornehmen. In diesem Beispiel wird ein SLAX op-Skript erstellt, das die Vorlage verwendet, um eine Schnittstelle auf einem Gerät zu deaktivieren, auf jcs:load-configuration
dem Junos OS ausgeführt wird. Alle für die jcs:load-configuration
Vorlage erforderlichen Werte werden als Variablen definiert, die dann an die Vorlage übergeben werden.
In diesem Beispiel wird die Variable usage
mit einer allgemeinen Beschreibung der Funktion des Skripts initialisiert. Wenn Sie das Skript ausführen, ruft es die jcs:output()
Funktion auf, um die Verwendungsbeschreibung in der CLI auszugeben. Auf diese Weise können Sie überprüfen, ob Sie das Skript für den richtigen Zweck verwenden.
Das Skript ruft die jcs:get-input()
Funktion auf, die zur Deaktivierung des Namens der Schnittstelle auffordert, und speichert den Schnittstellennamen in der interface
Variablen. Die config-changes
Variable speichert die Junos XML-Konfigurationsdaten, die auf dem Gerät geladen werden sollen, und verweist auf die interface
Variable. Der jcs:load-configuration
Vorlagenaufruf legt den Wert des configuration
Parameters auf die in der config-changes
Variablen gespeicherten Daten fest.
Die load-action
Variable wird auf merge
gesetzt, wodurch die neuen Konfigurationsdaten mit der Kandidatenkonfiguration zusammengeführt werden. Dies ist das Äquivalent zum Befehl load merge
CLI configuration mode .
Die options
Variable definiert die Optionen für den Commit-Vorgang. Mit dem Operator wird eine :=
Knotenmenge erstellt, die als Wert des commit-options
Parameters an die Vorlage übergeben wird. Dieses Beispiel enthält das log
Tag, um die Beschreibung des Commits zum Commit-Protokoll hinzuzufügen, damit Sie später darauf zurückgreifen können.
Der Aufruf der jcs:open()
Funktion öffnet eine Verbindung mit dem Junos OS Management Process (mgd) auf dem lokalen Gerät und gibt ein Verbindungshandle zurück, das in der conn
Variablen gespeichert ist. Das Skript ruft dann die jcs:load-configuration
Vorlage auf.
Der :=
Operator kopiert die Ergebnisse des jcs:load-configuration
Vorlagenaufrufs in eine temporäre Variable und führt die node-set
Funktion für diese Variable aus. Die resultierende Knotenmenge wird dann in der results
Variablen gespeichert. Der :=
Operator stellt sicher, dass es sich bei der results
Variablen um eine Knotenmenge und nicht um ein Ergebnisstrukturfragment handelt, damit das Skript auf den Inhalt zugreifen kann.
Die jcs:close()
Funktion schließt die Verbindung zum Gerät. Standardmäßig gibt die jcs:load-configuration
Vorlage keine Meldungen an die CLI aus. In diesem Beispiel wird in der Antwort nach Meldungen xnm:error
gesucht und gedrucktxmn:warning
, um Probleme mit dem Commit schnell zu identifizieren.
SLAX-Syntax
version 1.2; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; ns ext = "http://xmlsoft.org/XSLT/namespace"; import "../import/junos.xsl"; match / { <op-script-results> { var $usage = "This script disables the specified interface." _ "The script modifies the candidate configuration to disable " _ "the interface and commits the configuration to activate it."; var $temp = jcs:output($usage); var $interface = jcs:get-input("Enter interface to disable: "); var $config-changes = { <configuration> { <interfaces> { <interface> { <name> $interface; <disable>; } } } } var $load-action = "merge"; var $options := { <commit-options> { <log> "disabling interface " _ $interface; } } var $conn = jcs:open(); var $results := { call jcs:load-configuration( $action=$load-action, $commit-options=$options, $configuration=$config-changes, $connection=$conn); } var $close-results = jcs:close($conn); if ($results//xnm:error) { for-each ($results//xnm:error) { <output> message; } } if ($results//xnm:warning) { for-each ($results//xnm:warning) { <output> message; } } } }
Verifizierung
Überprüfen des Commits
Zweck
Vergewissern Sie sich, dass der Commit erfolgreich war.
Aktion
Sie sollten Code in Ihr Skript einfügen, der die von der jcs:load-configuration
Vorlage zurückgegebene Knotengruppe auf Fehler oder Warnungen analysiert. Auf diese Weise können Sie leichter feststellen, ob der Commit erfolgreich war. Wenn keine Warn- oder Fehlermeldungen vorhanden sind, können Sie den Erfolg des Commits auf verschiedene Weise überprüfen.
Überprüfen Sie das Commit-Protokoll, um sicherzustellen, dass der Commit erfolgreich war. Wenn Sie die
log
Option in dencommit-options
Parameter aufgenommen haben, sollte die Nachricht zusammen mit den Commit-Informationen im Commit-Protokoll sichtbar sein.user@host> show system commit 0 2010-09-22 17:08:17 PDT by user via junoscript disabling interface so-0/0/0
Überprüfen Sie die Syslog-Meldungsdatei, um sicherzustellen, dass der Commit-Vorgang protokolliert wurde. In diesem Fall sehen Sie auch eine
SNMP_TRAP_LINK_DOWN
Meldung für die deaktivierte Schnittstelle so-0/0/0. Abhängig von Ihren Konfigurationseinstellungen für Ablaufverfolgungsoptionen wird diese Meldung möglicherweise in Ihrer Protokolldatei angezeigt oder nicht.user@host> show log messages | last Sep 22 17:08:13 host file[7319]: UI_COMMIT: User 'user' requested 'commit' operation (comment: disabling interface so-0/0/0) Sep 22 17:08:16 host mib2d[1434]: SNMP_TRAP_LINK_DOWN: ifIndex 526, ifAdminStatus down(2), ifOperStatus down(2), ifName so-0/0/0
Überprüfen der Konfigurationsänderungen
Zweck
Stellen Sie sicher, dass die richtigen Änderungen in die Konfiguration integriert sind.
Aktion
Zeigen Sie die Konfiguration an, und stellen Sie sicher, dass die Änderungen für die angegebene Schnittstelle sichtbar sind.
user@host> show configuration interfaces so-0/0/0 disable;
In diesem Beispiel können Sie auch den
show interfaces interface-name
Befehl Betriebsmodus ausführen, um zu überprüfen, ob die Schnittstelle deaktiviert wurde. In diesem Fall zeigt die Ausgabe, die vor dem Deaktivieren der Schnittstelle erfasst wurde, dass die SchnittstelleEnabled
.user@host> show interfaces so-0/0/0 Physical interface: so-0/0/0, Enabled, Physical link is Up Interface index: 128, SNMP ifIndex: 526 Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16, Payload scrambler: Enabled Device flags : Present Running Interface flags: Point-To-Point SNMP-Traps Internal: 0x4000 Link flags : Keepalives CoS queues : 4 supported, 4 maximum usable queues Last flapped : 2010-09-14 10:33:25 PDT (1w1d 06:27 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) SONET alarms : None SONET defects : None
Die Ausgabe, die nach dem Ausführen des Skripts zum Deaktivieren der Schnittstelle erfasst wird, zeigt, dass die Schnittstelle jetzt
Administratively down
.user@host> show interfaces so-0/0/0 Physical interface: so-0/0/0, Administratively down, Physical link is Up Interface index: 128, SNMP ifIndex: 526 Link-level type: PPP, MTU: 4474, Clocking: Internal, SONET mode, Speed: OC3, Loopback: None, FCS: 16, Payload scrambler: Enabled Device flags : Present Running Interface flags: Down Point-To-Point SNMP-Traps Internal: 0x4000 Link flags : Keepalives CoS queues : 4 supported, 4 maximum usable queues Last flapped : 2010-09-14 10:33:25 PDT (1w1d 06:40 ago) Input rate : 0 bps (0 pps) Output rate : 0 bps (0 pps) SONET alarms : None SONET defects : None