如何检查ansible任务返回的数组中是否存在字符串

时间:2018-11-01 15:01:52

标签: python ansible

我正在运行一个任务,想查看运行的任务返回的列表中是否存在子字符串。

该任务使用win_shell模块并执行以下命令:netstat -aon | sls 8080"

在进程正在运行的情况下,结果将如下所示:

stdout_lines: [
    "",
    "",
    " TCP     127.0.0.1:8080     0.0.0.0:0      LISTENING 9196",
    ""
]

在python中,我将执行类似的操作来检查列表中的元素中是否存在子字符串。

matching = [s for s in some_list if "8080" in s]

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

我看到两个选择。

首先,您可以执行以下操作:

- name: Capture output for analysis
  shell: "netstat -aon | sls 8080"
  register: netstat_output

- name: Check if the substring is in the output
  command: <do something else>
  when: "'some word' in {{netstat_output.stdout}}"

另一种选择是突破Python脚本并利用它,如果上述内容仍不能完全满足您的需求。

- name: Run verification in Python
  script: some-script.py

希望这会有所帮助!