Understanding Extension Functions in Junos OS Automation Scripts
Junos OS provides automation scripting tools, including extension functions and named templates, that you can use in commit, op, event, and SNMP scripts to more easily accomplish scripting tasks. 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.
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.2 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 |
Namespaces |
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 |
I/O 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 |
|
– |
– |
I/O control |
Generate an error message on the console. |
Y |
|
– |
– |
I/O control |
Return information for the requested MIB object from an SNMP script. |
Y |
|
– |
– |
I/O 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 |
I/O control |
Evaluate a SLAX expression and return the result. |
– |
|
jcs |
1.0 |
Utility |
Execute an 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 |
I/O 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 |
I/O 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 |
I/O control |
Invoke a CLI prompt and wait for user input. The input is not echoed back to the user. |
Y |
– |
– |
I/O control |
Retrieve the action value passed to the SNMP script. |
Y |
|
– |
– |
I/O 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 |
I/O 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. Return the host IP address, protocol family, prefix length, network address, and network mask. |
Y |
|
jcs, slax |
1.0 |
I/O control |
Generate formatted output text. Most standard |
Y |
|
jcs, slax |
1.0 |
I/O 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 |
I/O control |
Log messages with the specified priority to the system log file. |
Y |
|
jcs, slax |
1.0 |
I/O control |
Issue a trace message, which is sent to the trace file. |
Y |