Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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.

Note:

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.

Table 1: Extension Functions for Use in Automation Scripts

Function

Name-spaces

SLAX Version

Type

Description

Support in Python Scripts

base64-decode()

slax

1.1

Data manipulation

Decode BASE64 encoded data and return a string.

base64-encode()

slax

1.1

Data manipulation

Encode a string of data in the BASE64 encoding format.

break-lines()

jcs, slax

1.0

Data manipulation

Break a simple element into multiple elements, delimited by newlines.

close()

jcs

1.0

Utility

Close a previously opened connection handle.

dampen()

jcs, slax

1.0

Utility

Prevent the same operation from being repeatedly executed within a script.

Y

document()

slax

1.1

Input/output control

Read data from a file or URL and return a string.

emit_change()

Utility

Generate a persistent or transient change to the configuration in a commit script.

Y

emit_error()

Input/output control

Generate an error message on the console.

Y

emit_snmp_attributes()

Input/output control

Return information for the requested MIB object from an SNMP script.

Y

emit_warning()

Input/output control

Generate a warning message on the console.

Y

empty()

jcs, slax

1.0

Logic

Evaluate a node set or string argument to determine if it is an empty value.

evaluate()

slax

1.1

Input/output control

Evaluate a SLAX expression and return the result.

execute()

jcs

1.0

Utility

Execute a remote procedure call (RPC) within the context of a specified connection handle.

first-of()

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.

get-command()

jcs, slax

1.1

Input/output control

Prompt the user for command input and return the input as a string.

get-hello()

jcs

1.0

Utility

Return the session ID and the capabilities of the NETCONF server during a NETCONF session.

get-input() (XSLT/SLAX)

get_input() (Python)

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

get-protocol()

jcs

1.0

Utility

Return the session protocol associated with the connection handle.

get-secret() (XSLT/SLAX)

get_secret() (Python)

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

get_snmp_action()

Input/output control

Retrieve the action value passed to the SNMP script.

Y

get_snmp_oid()

Input/output control

Retrieve the OID value passed to the SNMP script.

Y

hostname()

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

invoke()

jcs

1.0

Utility

Invoke an RPC on a local device running Junos OS.

open()

jcs

1.0

Utility

Return a connection handle that can be used to execute RPCs.

output()

jcs, slax

1.0

Input/output control

Generate unformatted output text that is immediately sent to the CLI session.

Y

parse-ip()

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

printf()

jcs, slax

1.0

Input/output control

Generate formatted output text. Most standard printf formats are supported, in addition to some Junos OS-specific formats. The function returns a formatted string but does not print it on call.

Y

progress()

jcs, slax

1.0

Input/output control

Issue a progress message containing the single argument immediately to the CLI session provided that the detail flag was specified when the script was invoked.

Y

regex()

jcs, slax

1.0

Data manipulation

Evaluate a regular expression against a given string argument and return any matches.

set_routing_instance()

-

-

Utility

Program the protocol software (TCP/UDP) to use nondefault routing instances.

Y

sleep()

jcs, slax

1.0

Utility

Cause the script to sleep for a specified time.

split()

jcs, slax

1.0

Data manipulation

Split a string into an array of substrings delimited by a regular expression pattern.

sysctl()

jcs, slax

1.0

Utility

Return the value of the given sysctl value as a string or an integer.

Y

syslog()

jcs, slax

1.0

Input/output control

Log messages with the specified priority to the system log file.

Y

trace()

jcs, slax

1.0

Input/output control

Issue a trace message, which is sent to the trace file.

Y