Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Example: Importing Files Using an Op Script

 

The op script in this example uses the Junos XML protocol file-get operation to read the contents of a file from a remote server.

Requirements

This example uses a device running Junos OS.

Overview and Op Script

The Junos XML protocol file-get operation reads the contents of a file. The basic syntax for using the file-get command is as follows:

The following tag elements are used with the file-get command.

  • encoding—(Mandatory) Specifies the type of encoding used. You can use ASCII, base64, or raw encoding.

  • filename—(Mandatory) Within this tag, you include the full or relative path and filename of the file to import. When you use a relative path, the specified path is relative to the /var/tmp/ directory if the file-get operation is executed locally. If the operation is executed remotely within the context of a connection handle, the path is relative to the user’s home directory.

Note

When you use ASCII encoding, the file-get operation converts any control characters in the imported file to the Unicode character 'SECTION SIGN' (U+00A7).

XSLT Syntax

The following sample script connects to a remote device and reads the contents of the specified file. The script takes three arguments: the IP address or hostname of the remote device, the filename, and the file encoding. The arguments variable is declared at the global level of the script so that the argument names and descriptions are visible in the command-line interface (CLI).

The script declares the fileget variable, which contains the remote procedure call (RPC) for the file-get operation. The command-line arguments define the values for the filename and encoding tag elements. If the mandatory argument myhost is missing, the script issues an error and halts execution. Otherwise, the script prompts for the username and password that will be used to connect to the remote device.

If connection to the remote device is successful, the script executes the RPC within the context of the connection handle. The output of the file-get operation, which is the result of the jcs:execute() function, is stored in the out variable. If the operation encounters an error, the script prints the error to the CLI. If the file-get operation is successful, the contents of the file are stored in the out variable, which is printed to the CLI. The connection to the remote host is then closed.

SLAX Syntax

Configuration

Step-by-Step Procedure

To download, enable, and test the script:

  1. Copy the XSLT or SLAX script into a text file, name the file import.xsl or import.slax as appropriate, and copy it to the /var/db/scripts/op/ directory on the device.
  2. In configuration mode, include the file statement at the [edit system scripts op] hierarchy level and import.xsl or import.slax as appropriate.

  3. Issue the commit and-quit command to commit the configuration and to return to operational mode.

  4. Execute the op script by issuing the op import operational mode command and include any necessary arguments.

Verification

Verifying the Script Arguments

Purpose

Verify that the argument names and descriptions show up in the CLI.

Action

Issue the op import ? operational mode command. The CLI lists the possible completions for the script arguments based on the definitions within the global arguments variable in the script.

user@host> op import ?

Verifying Op Script Execution

Purpose

Verify that the script behaves as expected.

Action

Issue the op import myhost host encoding encoding filename file operational mode command, and include the appropriate username and password when prompted. If script execution is successful, the contents of the requested file are displayed. For example:

root@host> op import myhost router1 encoding ascii filename /var/db/scripts/op/test.slax

If you fail to supply the IP address or hostname of the remote device in the command-line arguments, the script issues an error and halts execution.

root@host> op import

Also, if the specified path or file does not exist, the script issues an error.

root@host> op import myhost router1 encoding ascii filename /var/db/scripts/op/test1.slax