модуль cisco.ios.ios_command – модуль для выполнения команд на удалённых устройствах.
Примечание
Этот модуль входит в коллекцию cisco.ios (версия 11.4.2).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install cisco.ios.
Чтобы использовать её в плейбуке, укажите: cisco.ios.ios_command.
Добавлено в cisco.ios 1.0.0
Обзор
- Отправляет произвольные команды узлу ios и возвращает результаты, считанные с устройства. Этот модуль включает аргумент, который заставляет модуль ожидать выполнения определённого условия перед возвратом результата или завершаться по тайм-ауту, если условие не выполнено.
- Этот модуль не поддерживает выполнение команд в режиме конфигурации. Для настройки устройств IOS используйте ios_config.
Примечание
Для этого модуля имеется соответствующий плагин действий.
Псевдонимы: command
Параметры
Параметр | Комментарии |
|---|---|
commands список / элементы=любые / обязательный | Список команд для отправки удалённому устройству ios через настроенный провайдер. Возвращается результат выполнения команды. Если указан аргумент wait_for, модуль не возвращает результат, пока условие не будет выполнено или не истечёт число повторных попыток. Если для выполнения отправленной устройству команды требуется ответ на запрос, можно передать словарь, содержащий command, answer и prompt. Часто используемые ответы — ‘y’ или “\r” (возврат каретки, необходимо использовать двойные кавычки). См. примеры. |
interval целое число | Задаёт интервал в секундах между повторными попытками выполнения команды. Если команда не удовлетворяет указанным условиям, интервал определяет, сколько времени ждать перед повторной попыткой. По умолчанию: |
match строка | Аргумент match используется вместе с аргументом wait_for для задания политики сопоставления. Допустимые значения: Варианты:
|
retries целое число | Задаёт количество повторных попыток выполнения команды до того, как она будет считаться неудачной. При каждой попытке команда выполняется на целевом устройстве и проверяется на соответствие условиям wait_for. По умолчанию: |
wait_for псевдонимы: waitfor список / элементы=строка | Список условий для проверки результата выполнения команды. Задача будет ожидать выполнения каждого условия, прежде чем продолжить работу. Если условие не будет выполнено в течение заданного количества повторных попыток, задача завершится с ошибкой. См. примеры. |
Примечания
Примечание
- Проверено на Cisco IOSXE версии 17.3 в CML.
- Этот модуль работает с подключением
network_cli. См. https://docs.ansible.com/ansible/latest/network/user_guide/platform_ios.html - Дополнительные сведения об использовании Ansible для управления сетевыми устройствами см. в :ref:`руководстве по сетям Ansible <network_guide>`
- Дополнительные сведения об использовании Ansible для управления устройствами Cisco см. на `странице интеграции Cisco <https://www.ansible.com/integrations/networks/cisco>`_.
Примеры
- name: Run show version on remote devices
cisco.ios.ios_command:
commands: show version
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "show version"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "Cisco IOS XE Software, Version 17.03.04a\nCisco IOS Software [Amsterdam], Virtual XE Software ... register is 0x2102"
# ],
# "stdout_lines": [
# [
# "Cisco IOS XE Software, Version 17.03.04a",
# "Cisco IOS Software [Amsterdam], Virtual XE Software",
# "..."
# "Configuration register is 0x2102"
# ]
# ]
# }
- name: Run show version and check to see if output contains IOS
cisco.ios.ios_command:
commands: show version
wait_for: result[0] contains IOS
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "show version"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": [
# "result[0] contains IOS"
# ]
# }
# },
# "stdout": [
# "Cisco IOS XE Software, Version 17.03.04a\nCisco IOS Software [Amsterdam], Virtual XE Software ... register is 0x2102"
# ],
# "stdout_lines": [
# [
# "Cisco IOS XE Software, Version 17.03.04a",
# "Cisco IOS Software [Amsterdam], Virtual XE Software",
# "..."
# "Configuration register is 0x2102"
# ]
# ]
# }
- name: Run multiple commands on remote nodes
cisco.ios.ios_command:
commands:
- show version
- show interfaces
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "show version",
# "show interfaces"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "Cisco IOS XE Software, Version 17.03.04a\nCisco IOS Software [Amsterdam], Virtual XE Software Configuration register is 0x2102",
# "Loopback999 is up, line protocol is up ...failures, 0 output buffers swapped out"
# ],
# "stdout_lines": [
# [
# "Cisco IOS XE Software, Version 17.03.04a",
# "Cisco IOS Software [Amsterdam], Virtual XE Software",
# "..."
# "Configuration register is 0x2102"
# ],
# [
# "Loopback999 is up, line protocol is up ",
# " Hardware is Loopback",
# " Description: this is a test",
# " MTU 1514 bytes, BW 8000000 Kbit/sec, DLY 5000 usec, ",
# " reliability 255/255, txload 1/255, rxload 1/255",
# " Encapsulation LOOPBACK, loopback not set",
# " Keepalive set (10 sec)",
# " Last input never, output never, output hang never",
# " Last clearing of \"show interface\" counters never",
# " Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0",
# " Queueing strategy: fifo",
# " Output queue: 0/0 (size/max)",
# " 5 minute input rate 0 bits/sec, 0 packets/sec",
# " 5 minute output rate 0 bits/sec, 0 packets/sec",
# " 0 packets input, 0 bytes, 0 no buffer",
# " Received 0 broadcasts (0 IP multicasts)",
# " 0 runts, 0 giants, 0 throttles ",
# " 0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort",
# " 0 packets output, 0 bytes, 0 underruns",
# " Output 0 broadcasts (0 IP multicasts)",
# " 0 output errors, 0 collisions, 0 interface resets",
# " 0 unknown protocol drops",
# " 0 output buffer failures, 0 output buffers swapped out"
# ]
# ]
# }
- name: Run multiple commands and evaluate the output
cisco.ios.ios_command:
commands:
- show version
- show interfaces
wait_for:
- result[0] contains IOS
- result[1] contains Loopback0
# output-
# failed play as result[1] contains Loopback0 is false
# fatal: [iosxeappliance]: FAILED! => {
# "changed": false,
# "failed_conditions": [
# "result[1] contains Loopback0"
# ],
# "invocation": {
# "module_args": {
# "commands": [
# "show version",
# "show interfaces"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": [
# "result[0] contains IOS",
# "result[1] contains Loopback0"
# ]
# }
# },
# "msg": "One or more conditional statements have not been satisfied"
# }
- name: Run commands that require answering a prompt
cisco.ios.ios_command:
commands:
- command: "clear counters GigabitEthernet2"
prompt: 'Clear "show interface" counters on this interface \[confirm\]'
answer: "y"
- command: "clear counters GigabitEthernet3"
prompt: "[confirm]"
answer: "\r"
# output-
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# {
# "answer": "y",
# "check_all": false,
# "command": "clear counters GigabitEthernet2",
# "newline": true,
# "output": null,
# "prompt": "Clear \"show interface\" counters on this interface \\[confirm\\]",
# "sendonly": false
# },
# {
# "answer": "\r",
# "check_all": false,
# "command": "clear counters GigabitEthernet3",
# "newline": true,
# "output": null,
# "prompt": "[confirm]",
# "sendonly": false
# }
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "Clear \"show interface\" counters on this interface [confirm]y",
# "Clear \"show interface\" counters on this interface [confirm]"
# ],
# "stdout_lines": [
# [
# "Clear \"show interface\" counters on this interface [confirm]y"
# ],
# [
# "Clear \"show interface\" counters on this interface [confirm]"
# ]
# ]
# }
- name: Run commands with complex values like special characters in variables
cisco.ios.ios_command:
commands:
["{{ 'test aaa group TEST ' ~ user ~ ' ' ~ password ~ ' new-code' }}"]
vars:
user: "dummy"
password: "!dummy"
# ok: [iosxeappliance] => {
# "changed": false,
# "invocation": {
# "module_args": {
# "commands": [
# "test aaa group group test !dummy new-code"
# ],
# "interval": 1,
# "match": "all",
# "retries": 10,
# "wait_for": null
# }
# },
# "stdout": [
# "User was successfully authenticated."
# ],
# "stdout_lines": [
# [
# "User was successfully authenticated."
# ]
# ]
# }
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
failed_conditions список / элементы=строка | Список условий, которые не были выполнены Возвращается: при ошибке Пример: |
stdout список / элементы=строка | Набор ответов на команды Возвращается: всегда, за исключением ошибок низкого уровня (например, ошибки плагина действий) Пример: |
stdout_lines список / элементы=строка | Значение stdout, разбитое на список Возвращается: всегда, за исключением ошибок низкого уровня (например, ошибки плагина действий) Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/cisco/ios/ios_command_module.html