Я ищу все порты с определенным статусом на маршрутизаторе Cisco, чтобы отключить их. Я надеялся сделать это через std.out и с помощью регулярных выражений, но понятия не имею о синтаксисе регулярных выражений.
Например, выходные данные для команды show будут выглядеть примерно так, как показано ниже:
Port Device State Call DN Dev State
---------- --------------- -------- ------------- ------- ----------- ----
0/1/0 DEV0001 IS IDLE 2344 ATT
0/1/1 DEV0002 IS IDLE 2567 ATT
0/1/2 DEV0002 IS IDLE 2567 DEL
Что я хотел бы сделать, это сохранить номера портов, для которых Dev State = ATT в переменной, чтобы я мог закрыть их. В Cisco я могу отфильтровать команду show, чтобы сказать - show port | include ATT - в нем будут перечислены только порты, содержащие ATT состояния Dev, но не будет отображаться заголовок столбца в выходных данных. Из этого вывода мне нужно выполнить l oop и сохранить номера портов. Надеюсь, что это имеет смысл.
Ценю любую помощь. Спасибо.
Ansible Скрипт:
tasks:
- name: show port
ios_command:
commands:
- show port summary | incl ATT
register: config
- set_fact
myvalue: ""{{ config.stdout | regex_search(??) }}""
when config.stdout | length > 0
Вывод конфигурации отладки:
"stdout_lines": [
[
"Total Devices: 4",
"Total Calls in Progress: 0",
"Total Call Legs in Use: 0",
"",
"Port Device Device Call Dev Directory Dev ",
"Identifier Name State State Type Number Cntl ",
"---------- --------------- -------- ------------- ------- ----------- ---- ",
"0/1/0 DEV0001 IS IDLE ALG 3880 DEL",
"0/1/1 DEV0002 IS IDLE ALG 3881 ATT",
"0/1/2 DEV0003 IS IDLE ALG ATT",
"0/1/3 DEV0004 IS IDLE ALG 3882 DEL"
]
]
} ]