在注册字符串中搜索缺少文本时出现误报 (Ansible)



我在输出寄存器中搜索不相等的条件时,使用 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 }}"

最新更新