python - 如何通过ansible从shell命令的标准输出中删除换行符

标签 python jinja2 ansible

所以我有一个场景,我正在使用 ansible 的机器上执行 shell 命令以获取有关标准输出的一些信息。我正在使用 register 将其结果记录在变量 my_info 中并使用 debug 打印 my_info ,我看到了它附加了 \n 的结果(Ansible 附加了\n 。Linux 上的相同命令不附加\n")。当我在配置模板中使用 my_info 时它在配置中打印了一个新行,因此弄乱了我的配置。

下面是代码和输出的过程。

Ansible 代码:

- name: calculate range address start
  raw:  grep 'CONFIG_PARAMS' /path/to/the/file | head -n 1
  register: my_info

输出:

ok: [My_HOST] => {
    "msg": "CONFIG_PARAMS\n"
}

我们如何从这个输出中删除空格或者可能对模板进行更改以便不打印新行。

最佳答案

您可以使用 Jinja2 的内置过滤器为达到这个。具体来说,使用trim,例如:

- debug: msg='{{ my_info.stdout | trim}}'

关于python - 如何通过ansible从shell命令的标准输出中删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871906/

相关文章:

python - 提高 autograd jacobian 的性能

python - 在 Tensorflow 的 Estimator 中自定义 eval_metric_ops

html - 在下拉菜单中选择不下拉

python - dockerize 一个 python/jinja2 程序以生成 pdf 文档

javascript - 为动态时间选择器下拉添加 jquery 函数

ansible - 使用 if 条件将 True 或 False 分配给 Ansible 中的 gather_facts 不起作用

python/mongoengine 将关键字参数作为变量传递

python - 从文件名中提取 'WeekDay Month Date HH:MM:SS'?

templates - 如何将 jinja if-else 逻辑与 Ansible inventory 一起使用

docker - 使用 Ansible 在 Docker 容器内运行命令