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

标签 python ansible

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

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

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

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

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

匹配 = [s for s in some_list if "8080"in s]

有没有办法在ansible中实现这一点?

最佳答案

我看到两个选项。

首先,你可以这样做:

- 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

希望这有帮助!

关于python - 如何检查 ansible 任务返回的数组中是否存在字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103901/

相关文章:

python - 如何在 for 循环中分配新变量 - pandas dataframe 变量名称分配

linux - 带有任务变量的 ansible 调用处理程序

ansible - 在 ansible 中成为非 root 用户失败

用于解压的 ansible 本地文件路径

ssh - Ansible 是否可以容错 SSH?

python - python中 "for loop"的步骤

python pip - 具有本地依赖项的开发模式

python - 为什么下面的代码表现得如此奇怪? Python3.5 与 Python3.6

Python subprocess.Popen 作为 Windows 上的不同用户

ansible - 如何遍历剧本包括?