我想知道是否可以这样做,因为我需要在交换机内运行ios命令来测试我的主/备份环境。
命令的副本就像下面这样:
tasks:
- name: capturing the command "show ip int br" on {{ inventory_hostname }}
ios_command:
commands:
- sh ip int br | i up
provider: "{{ cli }}"
register: result
tags: inft
- debug: var=result
tags: result_debug
- name: copy interface status up to a temp file
copy:
content: "{{ result.stdout[0] }}"
dest: "~/ANSIBLE/{{ inventory_hostname }}.cfg"
tags: copy
这是文件的输出。
FastEthernet0/0 169.255.0.1 YES NVRAM up up
FastEthernet1/1 unassigned YES unset up up
FastEthernet1/6 unassigned YES unset up up
FastEthernet1/10 unassigned YES unset up up
Vlan1 unassigned YES NVRAM up up
捕获命令后,我需要打开文件,逐行读取并运行ios命令" shutdown"像这样:
interface FastEthernet0/0
shutdown
interface FastEthernet0/1
shutdown
我正在寻找"脚本"和"期待"命令,但我的尝试都没有奏效。
答案 0 :(得分:0)
with_lines正是您要找的。它遍历程序执行输出的每一行。
- shell: interface {{ item }} && shutdown
with_lines: awk '{print $1}' ~/ANSIBLE/{{ inventory_hostname }}.cfg
上面的示例使用awk
打印文件内容的第一列。
答案 1 :(得分:0)
我使用“with_file”解决了这个问题,注册了item.results [0] .item的内容并将其推送到设备,如下所示:
- name: Looping file
debug:
msg: "{{ item }}"
register: items
with_file:
- ~/ANSIBLE/{{ inventory_hostname }}.cfg
- debug: var=items.results[0].item
- name: Applying The Shutdown Template
ios_config:
lines:
- "{{ items.results[0].item }}"
provider: "{{cli}}"
register: shut
运行剧本:
TASK [Looping file] *******************************************************************************************************************************
ok: [169.255.0.1] => (item=interface FastEthernet1/0
shutdown
interface FastEthernet1/1
shutdown
interface FastEthernet1/3
shutdown
interface FastEthernet1/4
shutdown
interface FastEthernet1/5
shutdown
interface FastEthernet1/6
shutdown) => {
"item": "interface FastEthernet1/0 \nshutdown\ninterface FastEthernet1/1 \nshutdown\ninterface FastEthernet1/3 \nshutdown\ninterface FastEthernet1/4 \nshutdown\ninterface FastEthernet1/5 \nshutdown\ninterface FastEthernet1/6 \nshutdown",
"msg": "interface FastEthernet1/0 \nshutdown\ninterface FastEthernet1/1 \nshutdown\ninterface FastEthernet1/3 \nshutdown\ninterface FastEthernet1/4 \nshutdown\ninterface FastEthernet1/5 \nshutdown\ninterface FastEthernet1/6 \nshutdown"
}
TASK [debug] **************************************************************************************************************************************
ok: [169.255.0.1] => {
"items.results[0].item": "interface FastEthernet1/0 \nshutdown\ninterface FastEthernet1/1 \nshutdown\ninterface FastEthernet1/3 \nshutdown\ninterface FastEthernet1/4 \nshutdown\ninterface FastEthernet1/5 \nshutdown\ninterface FastEthernet1/6 \nshutdown"
}
TASK [Applying The Shutdown Template] *************************************************************************************************************
changed: [169.255.0.1]
TASK [debug] **************************************************************************************************************************************
ok: [169.255.0.1] => {
"shut1": {
"banners": {},
"changed": true,
"commands": [
"interface FastEthernet1/0 ",
"shutdown",
"interface FastEthernet1/1 ",
"shutdown",
"interface FastEthernet1/3 ",
"shutdown",
"interface FastEthernet1/4 ",
"shutdown",
"interface FastEthernet1/5 ",
"shutdown",
"interface FastEthernet1/6 ",
"shutdown"
],
"updates": [
"interface FastEthernet1/0 ",
"shutdown",
"interface FastEthernet1/1 ",
"shutdown",
"interface FastEthernet1/3 ",
"shutdown",
"interface FastEthernet1/4 ",
"shutdown",
"interface FastEthernet1/5 ",
"shutdown",
"interface FastEthernet1/6 ",
"shutdown"
]
}
}
PLAY RECAP ****************************************************************************************************************************************
169.255.0.1 : ok=4 changed=1 unreachable=0 failed=0