Example: Adding T1 Interfaces to a RIP Group
This example shows how to use commit scripts
to decrease the amount of manual configuration, specifically how to
add every T1 interface configured at the [edit interfaces]
hierarchy level to the [edit protocols rip group test]
hierarchy level.
Requirements
This example uses a device running Junos OS with T1 interfaces.
Overview and Commit Script
If you want to enable RIP on an interface, you must make changes
at both the [edit interfaces]
and [edit protocols
rip]
hierarchy levels. This example shows how to use commit
scripts to add every T1 interface configured at the [edit interfaces]
hierarchy level to the [edit protocols rip group test]
hierarchy level. This example includes no error, warning, or system
log messages. The changes to the configuration are made silently.
The example script is shown in both XSLT and SLAX syntax:
XSLT Syntax
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:template match="configuration"> <xsl:variable name="all-t1" select="interfaces/interface[starts-with(name, 't1-')]"/> <xsl:if test="$all-t1"> <change> <protocols> <rip> <group> <name>test</name> <xsl:for-each select="$all-t1"> <xsl:variable name="ifname" select="concat(name, '.0')"/> <neighbor> <name><xsl:value-of select="$ifname"/></name> </neighbor> </xsl:for-each> </group> </rip> </protocols> </change> </xsl:if> </xsl:template> </xsl:stylesheet>
SLAX Syntax
version 1.0; 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"; import "../import/junos.xsl"; match configuration { var $all-t1 = interfaces/interface[starts-with(name, 't1-')]; if ($all-t1) { <change> { <protocols> { <rip> { <group> { <name> "test"; for-each ($all-t1) { var $ifname = name _ '.0'; <neighbor> { <name> $ifname; } } } } } } } }
Configuration
Procedure
Step-by-Step Procedure
To download, enable, and test the script:
Copy the script into a text file, name the file rip-t1.xsl or rip-t1.slax as appropriate, and copy it to the /var/db/scripts/commit/ directory on the device.
Select the following test configuration stanzas, and press Ctrl+c to copy them to the clipboard.
If you are using the SLAX version of the script, change the filename at the
[edit system scripts commit file]
hierarchy level to rip-t1.slax.system { scripts { commit { file rip-t1.xsl; } } } interfaces { t1-0/0/0 { unit 0 { family iso; } } t1-0/0/1 { unit 0 { family iso; } } t1-0/0/2 { unit 0 { family iso; } } t1-0/0/3 { unit 0 { family iso; } } t1-0/1/0 { unit 0 { family iso; } } t1-0/1/1 { unit 0 { family iso; } } t1-0/1/2 { unit 0 { family iso; } } t1-0/1/3 { unit 0 { family iso; } } }
In configuration mode, issue the
load merge terminal
command to merge the stanzas into your device configuration.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
At the prompt, paste the contents of the clipboard by using the mouse and the paste icon.
Press Enter.
Press Ctrl+d.
Commit the configuration.
user@host# commit
Verification
Verifying the Configuration
Purpose
Verify that the script behaves as expected.
Action
Issue the show protocols rip group test
command.
All T1 interfaces should now appear under the [edit protocols
rip group test]
hierarchy level.
[edit] user@host# show protocols rip group test neighbor t1-0/0/0.0; neighbor t1-0/0/1.0; neighbor t1-0/0/2.0; neighbor t1-0/0/3.0; neighbor t1-0/1/0.0; neighbor t1-0/1/1.0; neighbor t1-0/1/2.0; neighbor t1-0/1/3.0;