# cli_command – Run a cli command on cli-based network devices

New in version 2.7.

- Synopsis

- Parameters

- Notes

- Examples

- Return Values

- Status

## Synopsis

- Sends a command to a network device and returns the result read from the device.

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
answer list |  | The answer to reply with if prompt is matched. The value can be a single answer or a list of answer for multiple prompts. In case the command execution results in multiple prompts the sequence of the prompt and excepted answer should be in same order.

check_all
boolean

Choices:
- no ←
- yes

By default if any one of the prompts mentioned in `prompt` option is matched it won't check for other prompts. This boolean flag, that when set to True will check for all the prompts mentioned in `prompt` option in the given order. If the option is set to True all the prompts should be received from remote host if not it will result in timeout.

command - / required |  | The command to send to the remote network device. The resulting output from the command is returned, unless sendonly is set.

newline
boolean
added in 2.9

Choices:
- no
- yes ←

The boolean value, that when set to false will send answer to the device without a trailing newline.

prompt list |  | A single regex pattern or a sequence of patterns to evaluate the expected prompt from command.

sendonly
boolean

Choices:
- no ←
- yes

The boolean value, that when set to true will send command to the device but not wait for a result.

## Notes

Note

- This module is supported on `ansible_network_os` network platforms. See the Network Platform Options for details.

## Examples

    - name: run show version on remote devices
      cli_command:
        command: show version

    - name: run command with json formatted output
      cli_command:
        command: show version | json

    - name: run command expecting user confirmation
      cli_command:
        command: commit replace
        prompt: This commit will replace or remove the entire running configuration
        answer: yes

    - name: run command expecting user confirmation
      cli_command:
        command: show interface summary
        prompt: Press any key to continue
        answer: y
        newline: false

    - name: run config mode command and handle prompt/answer
      cli_command:
        command: "{{ item }}"
        prompt:
          - "Exit with uncommitted changes"
        answer: 'y'
      loop:
        - configure
        - set system syslog file test any any
        - exit

    - name: multiple prompt, multiple answer (mandatory check for all prompts)
      cli_command:
        command: "copy sftp sftp://user@host//user/test.img"
        check_all: True
        prompt:
          - "Confirm download operation"
          - "Password"
          - "Do you want to change that to the standby image"
        answer:
          - 'y'
          - <password>
          - 'y'

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
json dictionary | when the device response is valid JSON | A dictionary representing a JSON-formatted response Sample: { "architecture": "i386", "bootupTimestamp": 1532649700.56, "modelName": "vEOS", "version": "4.15.9M" [...] }
stdout string | when sendonly is false | The response from the command Sample: Version: VyOS 1.1.7[...]

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Network Team. [network]

### Red Hat Support

More information about Red Hat’s support of this module is available from this Red Hat Knowledge Base article.

### Authors

- Nathaniel Case (@Qalthos)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.