Parsing 来自stdsout的Ansible解析值
我正在运行ansible playbook,并向网络设备(juniper)发送一些命令以检查状态。 输出如下所示:Parsing 来自stdsout的Ansible解析值,parsing,ansible,Parsing,Ansible,我正在运行ansible playbook,并向网络设备(juniper)发送一些命令以检查状态。 输出如下所示: "Monitor Failure codes:", " CS Cold Sync monitoring FL Fabric Connection monitoring", " GR GRES monitoring HW Hardware monitoring",
"Monitor Failure codes:",
" CS Cold Sync monitoring FL Fabric Connection monitoring",
" GR GRES monitoring HW Hardware monitoring",
" IF Interface monitoring IP IP monitoring",
" LB Loopback monitoring MB Mbuf monitoring",
" NH Nexthop monitoring NP NPC monitoring ",
" SP SPU monitoring SM Schedule monitoring",
" CF Config Sync monitoring",
" ",
"Cluster ID: 1",
"Node Priority Status Preempt Manual Monitor-failures",
"",
"Redundancy group: 0 , Failover count: 0",
"node0 1 secondary no no None ",
"node1 125 primary no no None ",
"",
"Redundancy group: 1 , Failover count: 0",
"node0 1 secondary yes no None ",
"node1 125 primary yes no None"
我想对冗余组0和1下的段进行筛选,然后进行一些检查(另一个端口没有任何用处。我想不出解析它们的最佳方法,写过滤插件?还是只写regexp?在最好的情况下,我想将冗余组0和1分开,这样我就可以分别检查它们。但这不是必需的。如果你需要一些复杂的处理,那么是的,写一个过滤插件 但一些基本处理可以通过正则表达式和其他过滤器完成,请参见以下示例:
- debug:
msg: "Name={{ node_name }}, val1={{ node_val_1 }}"
vars:
node_name: "{{ item.split()[0] }}"
node_val_1: "{{ item.split()[1] }}"
regexp: '^Redundancy group: 0[\s\S]+?^$'
new_line: "\n"
loop_control:
label: "{{ node_name }}"
with_items: >
{{ (
(mylines | join(new_line) + new_line)
| regex_search(regexp, multiline=true)
).splitlines()[1:] }}
这将搜索以
冗余组:0开始并以空行结束的行范围,然后将这些行馈送到循环调试模块中。Hmm,我刚刚进行了复制/粘贴,当我执行剧本时,我收到了此错误。致命:[testnode.1]:失败!=>{“msg”:“mylines”未定义“}我用:register:status保存了命令的输出,我对这个不太熟悉,所以我尝试用status替换myline,然后我得到了{“msg”:“'None'没有属性'splitlines'”}对不起,我猜不出你的变量名……是的,你不能:),我把评论贴了一半。首先调试状态
。你应该有类似于状态的东西。stdout
或其他东西。很好,现在它可以工作了:)