- play_arrow Overview
- play_arrow Junos Automation Scripts Overview
- play_arrow Junos XML Management Protocol and Junos XML API Overview
-
- play_arrow Automation Scripting Using XSLT
- play_arrow XSLT Overview
- play_arrow Standard XPath and XSLT Functions Used in Automation Scripts
- play_arrow Standard XSLT Elements and Attributes Used in Automation Scripts
-
- play_arrow Automation Scripting Using SLAX
- play_arrow SLAX Overview
- SLAX Overview
- SLAX Syntax Rules Overview
- SLAX Elements and Element Attributes Overview
- SLAX Elements as Function Arguments
- Understanding SLAX Default Namespaces
- XPath Expressions Overview for SLAX
- SLAX Templates Overview
- SLAX Functions Overview
- SLAX Parameters Overview
- SLAX Variables Overview
- SLAX Statements Overview
- XSLT Elements Without SLAX Equivalents
- SLAX Operators
- play_arrow SLAX Statements
- append
- apply-imports
- apply-templates
- attribute
- attribute-set
- call
- copy-node
- copy-of
- decimal-format
- element
- else
- else if
- expr
- fallback
- for
- for-each
- function
- if
- import
- key
- match
- message
- mode
- mvar
- number
- output-method
- param
- preserve-space
- priority
- processing-instruction
- result
- set
- sort
- strip-space
- template
- terminate
- trace
- uexpr
- use-attribute-sets
- var
- version
- while
- with
- play_arrow The libslax Distribution for Automation Scripting
- libslax Distribution Overview
- libslax Library and Extension Libraries Overview
- Download and Install the libslax Distribution
- libslax Default Extension Libraries: bit, curl, db, os, and xutil
- Understanding the SLAX Processor (slaxproc)
- How to Use the SLAX Processor (slaxproc)
- SLAX Debugger, Profiler, and callflow
-
- play_arrow Automation Scripting Using Python
- play_arrow Python Overview
- Understanding Python Automation Scripts for Junos Devices
- Requirements for Executing Python Automation Scripts on Junos Devices
- Overview of Python Modules on Junos Devices
- How to Use Python Interactive Mode on Devices Running Junos OS
- How to Use the psutil Module to Retrieve Process and System Information on Devices Running Junos OS
- How to Use the Requests Library for Python on Devices Running Junos OS
- IPv6 Support in Python Automation Scripts
- How to Specify the Routing Instance in Python 3 Applications on Devices Running Junos OS Evolved
-
- play_arrow Automation Script Input
- play_arrow Global Parameters in Automation Scripts
-
- play_arrow Manage Automation Scripts
- play_arrow Store and Enable Scripts
- play_arrow Configure a Remote Source for Scripts
- play_arrow Configure the Session Protocol for Scripts
- play_arrow Control Execution of Scripts
- play_arrow Synchronize Scripts Between Routing Engines
- play_arrow Convert Scripts Between SLAX and XSLT
-
- play_arrow Commit Scripts
- play_arrow Commit Scripts Overview
- play_arrow Create and Execute Commit Scripts
- Required Boilerplate for Commit Scripts
- XML Syntax for Common Commit Script Tasks
- Design Considerations for Commit Scripts
- How to Avoid Potential Conflicts When Using Multiple Commit Scripts
- Line-by-Line Explanation of Sample Commit Scripts
- Control the Execution of Commit Scripts During Commit Operations
- Control the Execution of Commit Scripts in the QFabric System
- Configure Checksum Hashes for a Commit Script
- How to Process Large Configurations Against Commit Scripts
- Example: Retrieve the Pre-Inheritance Candidate Configuration in a Commit Script
- play_arrow Generate a Custom Warning, Error, or System Log Message Using Commit Scripts
- Overview of Generating Custom Warning, Error, and System Log Messages
- Generate a Custom Warning, Error, or System Log Message in Commit Scripts
- SLAX and XSLT Commit Script Tag Elements to Use When Generating Messages
- Example: Generate a Custom Warning Message
- Example: Generate a Custom Error Message
- Example: Generate a Custom System Log Message
- play_arrow Generate Persistent or Transient Configuration Changes Using Commit Scripts
- Overview of Generating Persistent or Transient Configuration Changes Using Commit Scripts
- Generate a Persistent or Transient Configuration Change in SLAX and XSLT Commit Scripts
- Generate a Persistent or Transient Configuration Change in Python Commit Scripts
- SLAX and XSLT Commit Script Tag Elements to Use When Generating Persistent and Transient Configuration Changes
- Remove a Persistent or Transient Configuration Change Using Commit Scripts
- Example: Generate Persistent and Transient Configuration Changes Using Commit Scripts
- play_arrow Create Custom Configuration Syntax with Commit Script Macros
- Overview of Creating Custom Configuration Syntax with Commit Script Macros
- Create Custom Configuration Syntax with Commit Script Macros
- Create a Commit Script Macro to Read the Custom Syntax and Generate Related Configuration Statements
- Example: Creating Custom Configuration Syntax with Commit Script Macros
- play_arrow Commit Script Examples
- Example: Adding a Final then accept Term to a Firewall
- Example: Adding T1 Interfaces to a RIP Group
- Example: Assign a Classifier Using a Commit Script
- Example: Automatically Configure Logical Interfaces and IP Addresses
- Example: Configure Administrative Groups for LSPs
- Example: Configure a Default Encapsulation Type
- Example: Configure Dual Routing Engines
- Example: Configure an Interior Gateway Protocol on an Interface
- Example: Control IS-IS and MPLS Interfaces
- Example: Control LDP Configuration
- Example: Create a Complex Configuration Based on a Simple Interface Configuration
- Example: Impose a Minimum MTU Setting
- Example: Limit the Number of ATM Virtual Circuits
- Example: Limit the Number of E1 Interfaces
- Example: Load a Base Configuration
- Example: Prepend a Global Policy
- Example: Prevent Import of the Full Routing Table
- Example: Require Internal Clocking on T1 Interfaces
- Example: Require and Restrict Configuration Statements
- play_arrow Junos XML and XSLT Tag Elements Used in Commit Scripts
- play_arrow Troubleshoot Commit Scripts
-
- play_arrow Op Scripts
- play_arrow Op Scripts Overview
- play_arrow Create and Execute Op Scripts
- Required Boilerplate for Op Scripts
- Map Operational Mode Commands and Output Fields to Junos XML Notation
- How to Use RPCs and Operational Mode Commands in Op Scripts
- Declare and Use Command-Line Arguments in Op Scripts
- Configure Help Text for Op Scripts
- Define Operational Mode Commands to Allow in an Op Script
- Enable an Op Script and Define a Script Alias
- Configure Checksum Hashes for an Op Script
- Execute an Op Script on the Local Device
- Execute an Op Script from a Remote Site
- Disable an Op Script
- play_arrow Op Script Examples
- Change the Configuration Using SLAX and XSLT Scripts
- Example: Change the Configuration Using SLAX and XSLT Op Scripts
- Example: Change the Configuration Using Python Op Scripts
- Example: Customize Output of the show interfaces terse Command Using an Op Script
- Example: Display DNS Hostname Information Using an Op Script
- Example: Find LSPs to Multiple Destinations Using an Op Script
- Example: Restart an FPC Using an Op Script
- Example: Export Files Using an Op Script
- Example: Import Files Using an Op Script
- Example: Search Files Using an Op Script
- play_arrow Provision Services Using Service Template Automation
- play_arrow Troubleshoot Op Scripts
-
- play_arrow Event Policies and Event Scripts
- play_arrow Event Policy Overview
- play_arrow Event Policy Triggers
- Use Correlated Events to Trigger an Event Policy
- Trigger an Event Policy Based on Event Count
- Example: Trigger an Event Policy Based on Event Count
- Use Regular Expressions to Refine the Set of Events That Trigger a Policy
- Example: Controlling Event Policy Using a Regular Expression
- Generate Internal Events to Trigger Event Policies
- Use Nonstandard System Log Messages to Trigger Event Policies
- Junos Logger Utility
- play_arrow Event Policy Actions
- Configure an Event Policy to Execute Operational Mode Commands
- Configure an Event Policy to Change the Configuration
- Example: Changing the Configuration Using an Event Policy
- Example: Changing the Interface Configuration in Response to an Event
- Execute Event Scripts in an Event Policy
- Change the Configuration Using an Event Script
- Configuring an Event Policy to Pass Arguments to an Event Script
- Configure Event Policies to Ignore an Event
- Example: Ignore Events Based on Receipt of Other Events
- Overview of Using Event Policies to Raise SNMP Traps
- Example: Raise an SNMP Trap in Response to an Event
- Understanding the Event System Log Priority in an Event Policy
- Example: Configuring the Event System Log Priority in an Event Policy
- Example: Limit Event Script Output Based on a Specific Event Type
- play_arrow Configure Event Policy File Archiving
- play_arrow Configure Event Policy Privileges
- play_arrow Event Scripts Overview
- play_arrow Create and Execute Event Scripts
- play_arrow Troubleshoot Event Policies and Event Scripts
-
- play_arrow SNMP Scripts
- play_arrow SNMP Scripts Overview
- play_arrow Create and Execute SNMP Scripts
- play_arrow SNMP Script Example
- play_arrow Troubleshoot SNMP Scripts
-
- play_arrow Configuration Statements and Operational Commands
Understanding Extension Functions in Junos OS Automation Scripts
Junos OS provides automation scripting tools, including extension functions and named templates, that can be used in commit, op, event, and SNMP scripts to more easily accomplish scripting tasks on devices running Junos OS. The libraries provide logic, data manipulation, input and output, and utility functions and enable you to perform operations that are difficult or impossible to perform in XPath. Table 1 summarizes the Juniper extension functions.
To use the extension functions, Python automation scripts must
import the jcs
module, and SLAX and XSLT
scripts must declare the appropriate namespace URI in the style sheet
declaration. A function in the jcs
namespace
is defined in the namespace URI http://xml.juniper.net/junos/commit-scripts/1.0,
and a function in the slax
namespace is
defined in the namespace URI http://xml.libslax.org/slax .
Functions using the slax
namespace
are supported starting in Junos OS Release 12.2. Scripts using
Junos OS-independent extension functions that existed in earlier
releases in the jcs
namespace can use either
the jcs
or the slax
namespace starting in Junos OS Release 12.2. However, to use
any of these functions in earlier Junos OS releases, scripts
must use the jcs
namespace URI.
The SLAX script version
statement
determines which functions can be used in that script. In order to
use a function that was introduced in a specific SLAX version, the
value of the script version
statement must
be equal to or greater than the version in which the function was
introduced. For example, functions introduced in version 1.1 of the
SLAX language cannot be used in a SLAX script that has a "version
1.0" statement.
SLAX scripts can also use additional functions from the libslax default extension libraries. For more information, see libslax Default Extension Libraries: bit, curl, db, os, and xutil.
Python automation scripts only support a subset of the extension functions. For many of the unsupported functions, you can use standard Python libraries to achieve the same functionality.
Function | Name-spaces | SLAX Version | Type | Description | Support in Python Scripts |
---|---|---|---|---|---|
slax | 1.1 | Data manipulation | Decode BASE64 encoded data and return a string. | – | |
slax | 1.1 | Data manipulation | Encode a string of data in the BASE64 encoding format. | – | |
jcs, slax | 1.0 | Data manipulation | Break a simple element into multiple elements, delimited by newlines. | – | |
jcs | 1.0 | Utility | Close a previously opened connection handle. | – | |
jcs, slax | 1.0 | Utility | Prevent the same operation from being repeatedly executed within a script. | Y | |
slax | 1.1 | Input/output control | Read data from a file or URL and return a string. | – | |
– | – | Utility | Generate a persistent or transient change to the configuration in a commit script. | Y | |
– | – | Input/output control | Generate an error message on the console. | Y | |
– | – | Input/output control | Return information for the requested MIB object from an SNMP script. | Y | |
– | – | Input/output control | Generate a warning message on the console. | Y | |
jcs, slax | 1.0 | Logic | Evaluate a node set or string argument to determine if it is an empty value. | – | |
slax | 1.1 | Input/output control | Evaluate a SLAX expression and return the result. | – | |
jcs | 1.0 | Utility | Execute a remote procedure call (RPC) within the context of a specified connection handle. | – | |
jcs, slax | 1.0 | Logic | Return the first nonempty (non-null) item in a list, If all objects in the list are empty, the default expression is returned. | – | |
jcs, slax | 1.1 | Input/output control | Prompt the user for command input and return the input as a string. | – | |
jcs | 1.0 | Utility | Return the session ID and the capabilities of the NETCONF server during a NETCONF session. | – | |
| jcs, slax | 1.0 | Input/output control | Invoke a CLI prompt and wait for user input. If the script is run non-interactively, the function returns an empty value. This function cannot be used with event scripts. | Y |
jcs | 1.0 | Utility | Return the session protocol associated with the connection handle. | – | |
| jcs, slax | 1.0 | Input/output control | Invoke a CLI prompt and wait for user input. The input is not echoed back to the user. | Y |
– | – | Input/output control | Retrieve the action value passed to the SNMP script. | Y | |
– | – | Input/output control | Retrieve the OID value passed to the SNMP script. | Y | |
jcs | 1.0 | Utility | Return the fully qualified domain name associated with a given IPv4 or IPv6 address, provided the DNS server is configured on the device. | Y | |
jcs | 1.0 | Utility | Invoke an RPC on a local device running Junos OS. | – | |
jcs | 1.0 | Utility | Return a connection handle that can be used to execute RPCs. | – | |
jcs, slax | 1.0 | Input/output control | Generate unformatted output text that is immediately sent to the CLI session. | Y | |
jcs | 1.0 | Data manipulation | Parse an IPv4 or IPv6 address and return the host IP address, protocol family, prefix length, network address, and network mask. | Y | |
jcs, slax | 1.0 | Input/output control | Generate formatted output text. Most standard | Y | |
jcs, slax | 1.0 | Input/output control | Issue a progress message containing the single argument
immediately to the CLI session provided that the | Y | |
jcs, slax | 1.0 | Data manipulation | Evaluate a regular expression against a given string argument and return any matches. | – | |
- | - | Utility | Program the protocol software (TCP/UDP) to use nondefault routing instances. | Y | |
jcs, slax | 1.0 | Utility | Cause the script to sleep for a specified time. | – | |
jcs, slax | 1.0 | Data manipulation | Split a string into an array of substrings delimited by a regular expression pattern. | – | |
jcs, slax | 1.0 | Utility | Return the value of the given | Y | |
jcs, slax | 1.0 | Input/output control | Log messages with the specified priority to the system log file. | Y | |
jcs, slax | 1.0 | Input/output control | Issue a trace message, which is sent to the trace file. | Y |