Table of Contents

About This Guide
JUNOS Documentation and Release Notes
Objectives
Audience
Supported Platforms
Using the Indexes
Using the Examples in This Manual
Documentation Conventions
Documentation Feedback
Requesting Technical Support
Overview
Overview of Configuration and Diagnostic Automation
Commit Scripts Overview
Op Scripts Overview
Event Scripts Overview
Event Policies Overview
Scripts and Event Policy Configuration Statements
Any Hierarchy Level
[edit event-options] Hierarchy Level
[edit system scripts] Hierarchy Level
Introduction to the JUNOS XML and JUNOScript APIs
JUNOScript API and JUNOS XML API Overview
XML Overview
XML and JUNOScript Tag Elements
Document Type Definition
Advantages of Using the JUNOScript and JUNOS XML APIs
Overview of a JUNOScript Session
Understanding XSLT
XSLT Overview
XPath Overview
XSLT Templates Overview
Unnamed Templates
Named Templates
XSLT Parameter Passing Overview
XSLT Variables Overview
XSLT Programming Instructions Overview
<xsl:choose> Programming Instruction
<xsl:for-each> Programming Instruction
<xsl:if> Programming Instruction
Sample XSLT Programming Instructions and Pseudocode
XSLT Recursion Overview
XSLT Context (Dot) Overview
Understanding SLAX
SLAX Overview
How SLAX Works
Converting Scripts Between SLAX and XSLT
SLAX Statements Overview
for-each Statement
if, else if, and else Statements
match Statement
ns Statement
version Statement
SLAX Elements Overview
XPATH Expressions Overview for SLAX
SLAX Variables and Parameters Overview
SLAX Element Attributes Overview
Template Matching Overview for SLAX
SLAX Parameter Passing Overview
Named Templates Overview for SLAX
SLAX Comments Overview
XSLT Elements Without SLAX Equivalents
JUNOS Extension Functions and Templates in the jcs Namespace
JUNOS Extension Functions Overview
jcs:break-lines() Function
jcs:close() Function
jcs:dampen() Function
jcs:empty() Function
jcs:execute() Function
jcs:first-of() Function
jcs:get-input() Function
jcs:get-secret() Function
jcs:hostname() Function
jcs:invoke() Function
jcs:open() Function
jcs:output() Function
jcs:parse-ip() Function
jcs:printf() Function
jcs:progress() Function
jcs:regex() Function
jcs:sleep() Function
jcs:split() Function
jcs:sysctl() Function
jcs:syslog() Function
jcs:trace() Function
Importing the junos.xsl File
Templates in the junos.xsl File
<jcs:edit-path> Template
<jcs:emit-change> Template
<jcs:emit-comment> Template
<jcs:statement> Template
<xsl:template match="/"> Template
Summary of XPath and XSLT Constructs
Summary of Standard XPath and XSLT Functions Referenced in This Guide
concat()
contains()
count()
last()
name()
not()
position()
starts-with()
string-length()
substring-after()
substring-before()
Summary of Standard XSLT Elements and Attributes Referenced in This Guide
Summary of JUNOS XSLT Extension Functions
jcs:break-lines()
jcs:close()
jcs:dampen()
jcs:empty()
jcs:execute()
jcs:first-of()
jcs:get-input()
jcs:get-secret()
jcs:hostname()
jcs:invoke()
jcs:open()
jcs:output()
jcs:parse-ip()
jcs:printf()
jcs:progress()
jcs:regex()
jcs:sleep()
jcs:split()
jcs:sysctl()
jcs:syslog()
jcs:trace()
Summary of JUNOS Named XSLT Templates
Summary of SLAX Statements
apply-templates
call
else
for-each
if
match
mode
param
priority
template
var
version
with
Commit Scripts
Commit Scripts Overview
Commit Scripts Overview
Advantages of Using Commit Scripts
How Commit Scripts Work
Commit Script Input
Commit Script Output
Commit Scripts and the JUNOS Software Commit Model
Standard Commit Model
Commit Model with Commit Scripts
Avoiding Potential Conflicts When Using Multiple Commit Scripts
Required Boilerplate for Commit Scripts
Design Considerations for Commit Scripts
Line-by-Line Explanation of Sample Commit Scripts
Applying a Change to SONET/SDH Interfaces
Applying a Change to ISO-Enabled Interfaces
Writing Commit Scripts That Generate a Custom Warning, Error, or System Log Message
Overview of Generating Custom Warning, Error, and System Log Messages
Generating a Custom Warning, Error, or System Log Message
Tag Elements to Use When Generating Messages
Examples: Generating Custom Warning, Error, and System Log Messages
Example: Generating a Custom Warning Message
Verifying the Warning Message Generated by the Commit Script
Example: Generating a Custom Error Message
Verifying the Error Message Generated by the Commit Script
Example: Generating a Custom System Log Message
Verifying the System Log Message Generated by the Commit Script
Writing Commit Scripts That Generate a Persistent or Transient Configuration Change
Overview of Generating Persistent or Transient Configuration Changes
Differences Between Persistent and Transient Changes
Interaction of Configuration Changes and Configuration Groups
Tag Elements and Templates for Generating Changes
Generating a Persistent or Transient Change
Removing a Persistent or Transient Change
Tag Elements to Use When Generating Persistent and Transient Changes
Examples: Generating Persistent and Transient Changes
Example: Generating a Persistent Change
Verifying the Persistent Change Generated by the Commit Script
Example: Generating a Transient Change
Verifying the Transient Change Generated by the Commit Script
Writing Commit Scripts That Create Custom Configuration Syntax with Macros
Overview of Creating Custom Configuration Syntax with Macros
How Macros Work
Creating a Custom Syntax
<data> Element
Expanding the Custom Syntax
Other Ways to Use Macros
Creating a Macro to Read the Custom Syntax and Generate Related Configuration Statements
Example: Creating Custom Configuration Syntax with Macros
Verifying the Configuration Statements Generated by the Commit Script
Configuring and Troubleshooting Commit Scripts
Implementing Commit Scripts
Controlling Execution of Commit Scripts During Commit Operations
Enabling Commit Scripts to Execute During Commit Operations
Preventing Commit Scripts from Executing During Commit Operations
Deactivating Commit Scripts
Activating Commit Scripts
Storing Commit Scripts in Flash Memory
Overview of Updating Commit Scripts from a Remote Source
Configuring the Master Source for a Commit Script
Updating a Commit Script from the Master Source
Updating a Commit Script from an Alternate Location
Configuring Checksum Hashes for a Commit Script
Executing Large Commit Scripts
Converting a Commit Script from XSLT to SLAX
Converting a Commit Script from SLAX to XSLT
Displaying Commit Script Output
Tracing Commit Script Processing
Minimum Configuration for Tracing for Commit Script Operations
Example: Minimum Configuration for Enabling Traceoptions for Commit Scripts
Configuring Tracing of Commit Scripts
Configuring the Commit Script Log Filename
Configuring the Number and Size of Commit Script Log Files
Configuring Access to Commit Script Log Files
Configuring the Commit Script Trace Operations
Troubleshooting Commit Scripts
Commit Script Examples
Example: Requiring and Restricting Configuration Statements
Testing the ex-no-nukes Script
Example: Requiring Internal Clocking on T1 Interfaces
Testing the ex-clocking-error Script
Example: Imposing a Minimum MTU Setting
Testing the ex-so-mtu Script
Example: Limiting the Number of E1 Interfaces
Testing the ex-16-e1-limit Script
Example: Limiting the Number of ATM Virtual Circuits
Testing the ex-atm-vc-limit Script
Example: Controlling IS-IS and MPLS Interfaces
Testing the ex-iso Script
Example: Adding T1 Interfaces to a RIP Group
Testing the ex-rip-t1 Script
Example: Configuring a Default Encapsulation Type
Testing the ex-so-encap Script
Example: Controlling LDP Configuration
Testing the ex-ldp Script
Example: Adding a Final then accept Term to a Firewall
Testing the ex-add-accept Script
Example: Configuring an Interior Gateway Protocol on an Interface
Testing the ex-if-class Script
Example: Creating a Complex Configuration Based on a Simple Interface Configuration
Testing the ex-if-params Script
Example: Configuring Administrative Groups for LSPs
Testing the ex-lsp-admin Script
Example: Configuring Dual Routing Engines
Testing the ex-dual-re and ex-dual-re2 Scripts
Example: Preventing Import of the Full Routing Table
Testing the ex-import Script
Example: Automatically Configuring Logical Interfaces and IP Addresses
Testing the ex-atm-logical Script
Example: Prepending a Global Policy
Testing the ex-bgp-global-import Script
Example: Assigning a Classifier
Testing the ex-classifier Script
Example: Loading a Base Configuration
Testing the config-system Script
Summary of JUNOS XML and XSLT Tag Elements Used in Commit Scripts
<change> (XSLT)
<syslog> (JUNOS XML)
<transient-change> (XSLT)
<xnm:error> (JUNOS XML)
<xnm:warning> (JUNOS XML)
Summary of Commit Script Configuration Statements
allow-transients
apply-macro
checksum
commit
direct-access
file (Commit Scripts)
optional
refresh (Commit Scripts)
refresh-from (Commit Scripts)
scripts
source (Commit Scripts)
traceoptions (Commit and Op Scripts)
Operation (Op) Scripts
Op Scripts Overview
Op Script Programming Overview
How Op Scripts Work
Writing Op Scripts
Required Boilerplate for Op Scripts
Mapping Operational Mode Commands and Output Fields to JUNOS XML Notation
Using RPCs and Operational Mode Commands in Op Scripts
Using RPCs in Op Scripts
Using Operational Mode Commands in Op Scripts
Declaring Arguments in Op Scripts
Example: Declaring Arguments
Configuring Help Text for Op Scripts
Examples: Configuring Help Text for Op Scripts
Configuring and Executing Op Scripts
Implementing Op Scripts
Enabling an Op Script and Defining a Script Alias
Configuring Checksum Hashes for an Op Script
Executing an Op Script
Executing an Op Script by Issuing the op Command
Executing an Op Script at Login
Executing an Op Script from a Remote Site
Storing Op Scripts in Flash Memory
Specifying a Master Source for an Op Script
Updating an Op Script from the Master Source
Updating an Op Script from an Alternate Location
Converting an Op Script from XSLT to SLAX
Converting an Op Script from SLAX to XSLT
Tracing Op Script Processing
Minimum Configuration for Enabling Traceoptions for Op Scripts
Example: Minimum Configuration for Enabling Traceoptions for Op Scripts
Configuring Tracing of Op Scripts
Configuring the Op Script Log Filename
Configuring the Number and Size of Op Script Log Files
Configuring Access to Op Script Log Files
Configuring the Op Script Trace Operations
Op Script Examples
Example: Restarting an FPC Using an Op Script
Testing the ex-fpc Script
Example: Displaying DNS Hostname Information Using an Op Script
Testing the ex-hostname Script
Example: Customizing Output of the show interfaces terse Command Using an Op Script
Line-by-Line Explanation of the Script
Testing the ex-interface Script
Example: Finding LSPs to Multiple Destinations Using an Op Script
Testing the ex-lsp Script
Example: Importing and Exporting Files Using an Op Script
Exporting Files to a Remote Server
Importing Files from a Remote Server
Summary of Op Script Configuration Statements
arguments
checksum
command
description
file (Op Scripts)
op
refresh (Op Scripts)
refresh-from (Op Scripts)
scripts
source (Op Scripts)
traceoptions
Event Policy
Event Policy Overview
Event Notifications and Policies Overview
How Event Policies Work
Configuring Event Policy
Using Correlated Events to Trigger an Event Policy
Representing the Correlating Event in an Event Policy
Triggering an Event Policy Based on Event Count
Using Regular Expressions to Refine the Set of Events That Trigger a Policy
Generating Internal Events to Trigger Event Policies
Using Nonstandard System Log Messages to Trigger Event Policies
Defining Destinations for File Archiving by Event Policies
Configuring an Event Policy to Upload Files
Configuring the Delay Before Files Are Uploaded by an Event Policy
Configuring an Event Policy to Retry the File Upload Action
Configuring an Event Policy to Execute Operational Mode Commands
Executing Event Scripts in an Event Policy
Configuring Event Policies to Ignore an Event
Changing the User Privilege Level for an Event Policy Action
Configuring Event Policies to Raise SNMP Traps
Tracing Event Policy Processing
Configuring the Event Policy Log Filename
Configuring the Number and Size of Event Policy Log Files
Configuring Access to the Log File
Configuring a Regular Expression for Lines to Be Logged
Configuring the Trace Operations
Event Policy Examples
Example: Correlating Events Based on Receipt of Other Events Within a Specified Time Interval
Examples: Assigning a Transfer Delay to an Event Policy Action
Example: Representing the Correlating Event in an Event Policy
Example: Associating an Optional User with an Event Policy Action
Examples: Retrying the File Upload Action
Examples: Triggering a Policy Based on Event Count
Example: Ignoring Events Based on Receipt of Other Events
Example: Correlating Events Based on Event Attributes
Controlling Event Policy Using a Regular Expression
Example: Generating an Internal Event Every Hour
Example: Generating an Internal Event at Midnight
Example: Raising an SNMP Trap in Response to an Event
Example: Using Nonstandard System Log Messages to Trigger an Event Policy
Summary of Event Policy Configuration Statements
archive-sites
arguments
attributes-match
commands
destination
destinations
equals
event-options
event-script
events
events (Associating Events with a Policy)
events (Correlating Events with Each Other)
execute-commands
generate-event
ignore
matches
not
output-filename
output-format
policy
raise-trap
retry-count
starts-with
then
time-interval
time-of-day
traceoptions
transfer-delay
trigger
upload
user-name
within
Event Scripts
Event Scripts Overview
Event Script Programming Overview
How Event Scripts Work
Writing Event Scripts
Required Boilerplate for Event Scripts
Mapping Operational Mode Commands and Output Fields to JUNOS XML Notation
Using RPCs and Operational Mode Commands in Event Scripts
Using RPCs in Event Scripts
Using Operational Mode Commands in Event Scripts
Capturing and Using Event Details and Remote Execution Details in Event Scripts
Configuring Event Scripts
Implementing Event Scripts
Installing Event Scripts on a Router or Switch
Replacing an Event Script
Enabling an Event Script
Configuring Checksum Hashes for an Event Script
Executing an Event Script
Storing Event Scripts in Flash Memory
Specifying a Master Source for an Event Script
Updating an Event Script from the Master Source
Updating an Event Script from an Alternate Location
Converting an Event Script from XSLT to SLAX
Converting an Event Script from SLAX to XSLT
Tracing Event Script Processing
Minimum Configuration for Enabling Traceoptions for Event Scripts
Example: Minimum Configuration for Enabling Traceoptions for Event Scripts
Configuring Tracing of Event Scripts
Configuring the Event Script Log Filename
Configuring the Number and Size of Event Script Log Files
Configuring Access to Event Script Log Files
Configuring the Event Script Trace Operations
Event Script Examples
Example: Limiting Event Script Output Based on a Specific Event Type
Summary of Event Script Configuration Statements
checksum
event-script
file
refresh
refresh-from
remote-execution
source
traceoptions
Index
Index
Index of Statements and Commands