Environment commands

The MD-CLI has two environment configurations:

See the 7450 ESS, 7750 SR, 7950 XRS, and VSR MD-CLI Command Reference Guide for information about the environment commands in the MD-CLI.

Command aliases

The MD-CLI can be customized to provide an enhanced user experience through the use of command aliases.

Aliases can be configured to execute a user-defined command name that performs a specific action. Supported actions include:

Creating aliases

Aliases can be created and modified in the per-session environment context or the global configuration context. Aliases (or elements of the aliases) that are deleted in the per-session environment context return to their defaults (usually to the state of the global environment alias defined in the configuration context).

When an alias is configured, the alias acts as a substitute for a command or set of commands that can then be executed. Nokia recommends defining alias names that are meaningful to the operator. Alias names must not use any string that is an MD-CLI root element, such as admin, or that is an MD-CLI global command, such as insert. Aliases are displayed in command completion and ? help, where applicable.

The MD-CLI command history displays what was entered in the CLI. Instead of recording the resultant operation, the history records the alias name and any arguments.

Typical use cases for MD-CLI command aliases include:

  • shortcuts for navigating MD-CLI contexts
  • creating new MD-CLI output commands
  • aliasing existing MD-CLI commands

Mounting an alias

Aliases are mounted at specific points in the MD-CLI contexts. Aliases may be mounted globally using the mount-point global option. A globally mounted alias may be executed from any MD-CLI context.

Example: Execution of a globally mounted alias

The following example shows the execution of a globally mounted alias that creates the alias up for the back command.

[ex:/configure system management-interface cli md-cli environment 
A:admin@node-2# info
    command-alias {
        alias "up" {
            admin-state enable
            cli-command "back"
            mount-point global { }
        }
    }

[ex:/configure router "Base" bgp]
A:admin@node-2# up  # Moved back one level by typing “up”


[ex:/configure router "Base"]
A:admin@node-2# uPress Tab  # Integrated into MD-CLI command completion

 up

 update

[ex:/configure router "Base"]
A:admin@node-2# up ?  # Accepts parameters and displays ? help for aliased command

 [[levels] <number>]
 <number>  - <1..4294967295>
 Default   - 1

    Number of levels to move up

Alternatively, an alias may be mounted at one or more specific locations, which limits the contexts from which the alias may be executed. The execution of such an alias can be considered equivalent to executing the resultant operation from the present working context of the mount point.

Example: Execution of an alias mounted in the /show and /tools perform contexts

[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2# info
    alias "hello-from-some-places-only" {
        admin-state enable
        python-script "hello"
        mount-point "/show" { }
        mount-point "/tools perform" { }
    }

[/]
A:admin@node-2# /show hello-from-some-places-only
Hi

[/]
A:admin@node-2# /tools perform hello-from-some-places-only
Hi

[/show]
A:admin@node-2# hello-from-some-places-only
Hi

[/tools]
A:admin@node-2# hello-from-some-places-only
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
MINOR: MGMT_CORE #2201: Unknown element - 'hello-from-some-places-only'

Mount points may contain lists. Where lists are provisioned, the keys must be provided. If lists have default keys, these may be omitted. List keys do not need to be present in the current configuration.

Example: Alias using a nonexistent list key in a mount point

The key vpn3 does not exist as a current VPRN service. When vpn3 is entered on the command line, the resultant configuration shows the string vpn3 enclosed in quotation marks, escaped by the backslash (\) character.

[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2# info /state service vprn Press Tab

 <service-name>
 "vpn1"
 "vpn2"

*[ex:/configure system management-interface cli md-cli environment command-alias alias "list-keys-in-mount-point-example"]
A:admin@node-2# mount-point "/state service vprn vpn3"

*[ex:/configure system management-interface cli md-cli environment command-alias alias "list-keys-in-mount-point-example"]
A:admin@node-2# info
    admin-state enable
    python-script "hello"
    mount-point "/state service vprn \"vpn3\"" { }

Example: Alias automatically available

When the list key is created, the alias automatically becomes available in the context, as shown in the following example.

[/]
A:admin@node-2# /state service vprn "vpn3" list-keys-in-mount-point-example
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
MINOR: MGMT_CORE #2201: Unknown element - 'list-keys-in-mount-point-example'

[/]
A:admin@node-2# edit-config exclusive
INFO: CLI #2060: Entering exclusive configuration mode
INFO: CLI #2061: Uncommitted changes are discarded on configuration mode exit

(ex)[/]
A:admin@node-2# configure service vprn vpn3

*(ex)[/configure service vprn "vpn3"]
A:admin@node-2# customer "1"

*(ex)[/configure service vprn "vpn3"]
A:admin@node-2# commit

(ex)[/configure service vprn "vpn3"]
A:admin@node-2# /state service vprn vpn3 list-keys-in-mount-point-example
Hi

Configuring aliases to execute Python applications

An alias can execute a configured Python application. The alias python-script command can reference a Python application configured in the /configure python python-script context.

See Accounting and authorization of aliases for information about authorizing Python application execution using the alias command.

Configuring aliases to execute MD-CLI commands

An alias may execute an MD-CLI command by using the alias cli-command command. The command is configured using a string that contains the MD-CLI command to execute. The string must be syntactically correct and quotation marks (single or double quotes) must be escaped using the backslash character. If the string contains a list, the list key must be provided, except in the following cases:
  • the list key has a default entry
  • the list key is the last element of the CLI command

Example: Simplified navigation within the MD-CLI

*[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2# info
    alias "go-to-alias" {
        admin-state enable
        cli-command "configure system management-interface cli md-cli environment command-alias"
        mount-point global { }
    }

[ex:/configure router "Base" bgp]
A:admin@node-2# go-to-alias

[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2#

Example: List (router) with a default list key ("Base")

*[ex:/configure system management-interface cli md-cli environment command-alias alias "router-auth-stats"]
A:admin@node-2# info
    admin-state enable
    cli-command "show router authentication statistics"
    mount-point "/show" { }

[/state system]
A:admin@node-2# /show router-auth-stats

====================================================================
Authentication Global Statistics
====================================================================
Client Packets Authenticate Fail     : 0
Client Packets Authenticate Ok       : 0
====================================================================

Example: Key provided as a parameter

A list key can be omitted if the last element of the CLI command string is a list. This allows the key to be provided as a parameter when executing the alias, as shown in the following example.

[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2# info
    alias "vprn-state" {
        admin-state enable
        cli-command "info candidate /state service vprn"
        mount-point "/show" { }
    }

[/]
A:admin@node-2# /show vprn-state
                      ^^^^^^^^^^
MINOR: CLI #2001: Missing element value - 'service-name'

[/]
A:admin@node-2# /show vprn-state vpn1
    oper-service-id 1
    oper-state up
    sap-count 2
    sdp-bind-count 0
    template-used ""
    creation-origin manual
    vrtr-id 2
    oper-router-id 255.0.0.0
    oper-route-distinguisher-type auto

...snip...

Example: Extra parameters executed

Aliases can also accept arguments, allowing extra parameters to be executed, as shown in the following example.

[/]
A:admin@node-2# /show vprn-state vpn1 interface "test1" ipv4 icmp
    statistics {
        icmp-in-msgs 0
        icmp-in-errors 0
        icmp-in-dest-unreachables 0
        icmp-in-redirects 0
        icmp-in-echos 0
        icmp-in-echo-replies 0
        icmp-in-time-exceeds 0
        icmp-in-src-quenches 0
        icmp-in-timestamps 0
        icmp-in-timestamp-replies 0
        icmp-in-address-masks 0
        icmp-in-address-mask-replies 0
        icmp-in-parm-problems 0
        icmp-out-msgs 0
        icmp-out-errors 0
        icmp-out-dest-unreachables 0
        icmp-out-redirects 0
        icmp-out-echos 0
        icmp-out-echo-replies 0
        icmp-out-time-exceeds 0
        icmp-out-src-quenches 0
        icmp-out-timestamps 0
        icmp-out-timestamp-replies 0
        icmp-out-address-masks 0
        icmp-out-address-mask-replies 0
        icmp-out-parm-problems 0
        icmp-out-discards 0
    }

Example: Include output modifiers in definitions

Aliases that execute CLI commands may also include output modifiers in the definitions. In the following example, the alias bgp-top-line outputs the line from show router bgp summary that uses the output match modifier to select a specific string:

[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2# info
    alias "bgp-top-line" {
        admin-state enable
        cli-command "show router bgp summary | match \"AS:\""
        mount-point global { }
    }

[/]
A:admin@node-2# bgp-top-line
 BGP Router ID:255.0.0.0        AS:65535       Local AS:65535

Accounting and authorization of aliases

Aliases have specific accounting and authorization rules, as shown in the following configuration example.

Example
[ex:/configure system management-interface cli md-cli environment command-alias]
A:admin@node-2# info
    alias "my-python-alias" {
        admin-state enable
        python-script "hello"
        mount-point global { }
    }
    alias "my-cli-alias" {
        admin-state enable
        cli-command "info running /state service vprn"
        mount-point global { }
    }
    alias "my-cli-python-alias" {
        admin-state enable
        cli-command "pyexec cf3:\hello.py"
        mount-point global { }
    }

The command entered by the operator on the MD-CLI command line is sent to the accounting system, including all arguments supplied to the alias.

For example, if the operator enters my-cli-alias vpn1, the string my-cli-alias vpn1 is sent to the accounting system. If the operator enters my-python-alias, the string my-python-alias is sent to the accounting system.

The string sent to the authorization system depends on whether cli-command or python-script is configured in the alias context.

When an alias uses a CLI command, the resulting MD-CLI command is sent to the authorization system. For example, if the operator enters my-cli-alias vpn1, the string sent to the authorization system is info running /state service vprn vpn1. If the operator enters my-cli-python-alias, the string sent to the authorization system is pyexec cf3:\hello.py

If the alias is configured with the python-script option, the string sent to the authorization server is the referenced Python application name prefaced by the string python-script. This allows Python applications initiated with the pyexec command to be authorized independently of those initiated from within MD-CLI command aliases. Administrators can predefine approved Python applications that may be executed by users who otherwise have no access to run the pyexec command.

For example, if the operator enters my-python-alias, the string sent to the authorization server is python-script \”hello\”.

Customizing per-session environment settings

The environment can be customized for all sessions in the configuration under the configure system management-interface cli md-cli environment context, or per session using the environment command. When a new MD-CLI session is started, the per-session environment configuration is copied from the global environment configuration. Changes made to the global environment configuration after the session begins apply only to new sessions and do not affect current sessions. Changes made to the environment parameters for a session apply only for that session.

The per-session environment is accessed by entering environment at the operational root or with /environment from any other mode or context. Changes made in the per-session environment are immediate.

The info command displays the difference between the per-session environment and the configured global environment parameters. Therefore, for a new MD-CLI session, the info command has no output, as the per-session environment is the same as the global environment. The info detail command displays the current values in the global environment for all parameters.

Customizing the session prompt

Customizing the uncommitted changes indicator

As the default setting of the environment configuration, the uncommitted changes indicator is displayed as part of the command prompt. This setting can be modified per session or it can be changed for all MD-CLI sessions by changing the environment configuration.

The uncommitted-changes-indicator command under the environment prompt context suppresses or displays the change indicator for an MD-CLI session. Environment changes are applied immediately and are lost when the session disconnects.

Example
*[/environment prompt]
A:admin@node-2# uncommitted-changes-indicator false

[/environment prompt]
A:admin@node-2#

[/environment prompt]
A:admin@node-2# uncommitted-changes-indicator true

*[/environment prompt]
A:admin@node-2#

Customizing the line preceding the command prompt

By default, a blank line precedes the command prompt. This setting can be modified for each MD-CLI session.

The newline command under the environment prompt context suppresses or displays a new line before the prompt.

Example

[/]
A:admin@node-2# environment prompt

[/environment prompt]
A:admin@node-2# newline false
[/environment prompt]
A:admin@node-2# newline true

[/environment prompt]
A:admin@node-2#

Customizing the context information in the command prompt

By default, the context is displayed in the command prompt. This setting can be modified for each MD-CLI session.

The context command under the environment prompt context suppresses or displays the current context.

Example
[/environment prompt]
A:admin@node-2# context false

[]
A:admin@node-2# context true

[/environment prompt]
A:admin@node-2#

Customizing the date and time output

By default, the timestamp is not displayed before the command prompt. This setting can be modified for each MD-CLI session.

The timestamp command under the environment prompt context suppresses or displays the timestamp.

Example: Suppress or display the timestamp

[/environment prompt]
A:admin@node-2# timestamp true

Tue, 16 Feb 2021 16:37:26 UTC
[/environment prompt]
A:admin@node-2# timestamp false

[/environment prompt]
A:admin@node-2#

The environment time-display command configures the time zone display to UTC or local time (as configured in configure system time).

Example: Configure the time zone display

[/environment]
A:admin@node-2# time-display ?

 time-display <keyword>
 <keyword>  - (local|utc)
 Default    - local

    Time zone displayed before the prompt

The environment time-format command specifies the format for the time display.

Example: Specify the format for the time display

[/environment]
A:admin@node-2# time-format ?

 time-format <keyword>
 <keyword>  - (iso-8601|rfc-1123|rfc-3339)
 Default    - rfc-3339

    Time format to display date and time

Example: Show the time in the format defined by ISO 8601

[/state cpm "a" hardware-data]
A:admin@node-2# software-last-boot-time
    software-last-boot-time "2020-09-01 23:27:17 UTC"

Example: Show the time in the format defined by RFC 1123

[/state cpm "a" hardware-data]
A:admin@node-2# software-last-boot-time
    software-last-boot-time "Tue, 01 Sep 2020 23:27:17 UTC"

Example: Show the time in the format defined by RFC 3339

[/state cpm "a" hardware-data]
A:admin@node-2# software-last-boot-time
    software-last-boot-time 2020-09-01T23:27:17.0+00:00

Customizing the progress indicator

The progress indicator appears on the line immediately following the command and disappears when the MD-CLI command completes or when output is available to display. The indicator is a display of dynamically changing dots.

Example: Progress indicator

[ex:/configure]
A:admin@node-2# compare
...                    # progress indicator displays here as dots 

The delay interval can be configured using the delay command or the indicator can be disabled with the admin-state disable command under the environment progress-indicator context.

Example: Disable the progress indicator for logged sessions

[/environment progress-indicator]
A:admin@node-2# ?

 admin-state          - Administrative state of the progress indicator
 delay                - Delay before progress indicator is displayed
 type                 - Progress indicator output style

Customizing the pagination setting

The environment more command enables pagination when configured to true and disables pagination when configured to false enter.

Example: Using the environment more command

[/]
A:admin@node-2# environment more true
[/]
A:admin@node-2# show system security management

===============================================================================
Server Global
===============================================================================
Telnet:
Administrative State         : Enabled
Operational State            : Up
Telnet6:
Administrative State         : Disabled
Operational State            : Down
FTP:
Administrative State         : Disabled
Operational State            : Down
SSH:
Administrative State         : Enabled
Operational State            : Up
NETCONF:
Administrative State         : Disabled
Operational State            : Down
GRPC:
Administrative State         : Disabled
Operational State            : Down

Press Q to quit, Enter to print next line or any other key to print next page.

The pagination setting can be overridden by using | no-more for a single command. As with pagination disabled, the output is displayed completely without any prompts to continue.

Example: Overriding the pagination setting

[/]
A:admin@node-2# show system security management | no-more

Customizing the console settings

The default size for a console window is 24 lines long by 80 characters wide. The environment console command can be used to change these settings.

Example
[/environment]
A:admin@node-2# console ?

 console

 length               - Number of lines displayed on the screen
 width                - Number of columns displayed on the screen

Customizing the message level security settings

The INFO: CLI messages are displayed by default. The environment message-security-level command suppresses the INFO messages by changing the setting to warning.

Example
[/environment message-severity-level]
A:admin@node-2# cli ?

 cli <keyword>
 <keyword> - (warning|info)
 Default   - info

    Message severity threshold for CLI messages
Example

Following are examples of INFO: CLI messages that are suppressed when the setting is changed to warning.

INFO: CLI #2051: Switching to the classic CLI engine
INFO: CLI #2052: Switching to the MD-CLI engine
INFO: CLI #2054: Entering global configuration mode
INFO: CLI #2056: Exiting global configuration mode 
INFO: CLI #2055: Uncommitted changes are present in the candidate configuration
INFO: CLI #2057: Uncommitted changes are kept in the candidate configuration

Customizing configuration output display

Default values are always displayed in the info detail command output and not in the info command output. Use the environment info-output always-display admin-state command to display the values of the admin-state element in the info command output (without using the detail option), even if these values are set to the default. Enabling the admin-state command allows the info command output to always show the admin-state value without showing all the configured, default, and unconfigured values that are displayed using the info detail command. For more information, see Using the info command.

Example

In the following configuration output, the admin-state for port 1/1/2 with a default configuration is not displayed using the info command. The admin-state is displayed after the environment info-output always-display admin-state command is configured to true.

[ex:/configure port 1/1/2]
A:admin@node-2# info

[ex:/configure port 1/1/2]
A:admin@node-2# /environment info-output always-display admin-state

[ex:/configure port 1/1/2]
A:admin@node-2# info
    admin-state disable

Preventing changes to environment settings

The environment datastore is subject to AAA command authorization. A user can be prevented from modifying the global environment settings or the per-session environment settings, or both.

Example

In the following configuration output, entry 113 blocks user ‟tstuser” from modifying the global environment settings. In addition, entry 114 prevents the user from changing the per-session environment settings.

(ro)[/configure system security aaa local-profiles profile "tstuser"]
A:admin@node-2# info
    default-action permit-all
    entry 113 {
        action deny
        match "configure system management-interface cli md-cli environment"
    }
    entry 114 {
        action deny
        match "environment"
    }
[ex:/configure system management-interface cli md-cli environment]
A:tstuser@node-2# prompt timestamp
MINOR: MGMT_CORE #2020: Permission denied

[ex:configure system management-interface cli md-cli environment]
A:tstuser@node-2# /environment
MINOR: MGMT_CORE #2020: Permission denied

[ex:/configure system management-interface cli md-cli environment]
A:tstuser@node-2#