我有一个ansible playbook,最后从远程设备获取日志并将它们存储在变量中作为JSON结构。我还有一个用Python编写的脚本,它可以解析用这个JSON编写的日志,并显示包含特定日志和文本消息的输出。这是最后一个剧本任务
我有一个问题如何连接它。我尝试使用local_action
- name: Parse by local script
local_action: "shell echo '{{ result_VPN_log_json }}' | ./checkit.py"
这失败了,因为在JSON中有像'('
这样的字符"/bin/sh: -c: line 0: syntax error near unexpected token `('",
在这种情况下,您知道如何修理或如何使用管道吗? 是编写自己的过滤器插件并将checkit.py脚本的输出存储在playbook中的另一个变量中然后打印出来的唯一其他方法吗?
答案 0 :(得分:0)
您应该使用quote
filter来转义由shell解释的字符:
- name: Parse by local script
local_action: "shell echo '{{ result_VPN_log_json | quote }}' | ./checkit.py"
然而,告诉你的脚本如何处理引用的JSON字符串是不可能的。