我在输出寄存器中搜索不相等的条件时,使用 when 语句得到误报。原因是因为部分输出包含我正在搜索的文本,但它在另一行中。下面是我的代码示例。
tasks:
- ios_command:
commands: show run | inc logging host
provider: "{{cli}}"
register: run
- debug:
msg: "{{run.stdout_lines}}"
when: not run.stdout | join('') | search('192.168.0.60')
所以几乎发生的事情是,当返回值
"msg": [
[
"logging host 192.168.0.27",
"logging host 192.168.0.60"
]
]
因为 192.168.0.60 在那里,所以它会跳过整个任务。有人可以帮助我检测日志记录主机 192.168.0.27 是否在搜索的单独行中吗?
您需要遍历stdout_lines
以逐行检查。
- debug:
msg: "{{ item }}"
when: not "192.168.0.60" in item
with_items: "{{ run.stdout_lines }}"