带ansible的滤波器输出
所以我用ansible连接到运行PicOS8的互连设备。我发出的命令具有以下输出:带ansible的滤波器输出,ansible,ansible-2.x,Ansible,Ansible 2.x,所以我用ansible连接到运行PicOS8的互连设备。我发出的命令具有以下输出: 10.240.18.20,fe80::a94:efff:fe50:b516%eth0 fe80::a94:efff:fe71:d996%vlan.4,10.240.23.34 fe80::a94:efff:fe71:daa6%vlan.4,10.240.23. 这并不总是标准的,因为有时ipv4地址先于ipv6,或者有时根本没有ipv6 我使用ansible寄存器注册这个输出,比如说作为smm_输出 然后,我想
10.240.18.20,fe80::a94:efff:fe50:b516%eth0
fe80::a94:efff:fe71:d996%vlan.4,10.240.23.34
fe80::a94:efff:fe71:daa6%vlan.4,10.240.23.
这并不总是标准的,因为有时ipv4地址先于ipv6,或者有时根本没有ipv6
我使用ansible寄存器注册这个输出,比如说作为smm_输出
然后,我想显示输出,仅显示ipv4 ip地址,并使用下面的playbook命令:
- debug:
msg: "{{ smm_output.stdout_lines | ipv4('address') }}"
但是输出是空白的。不确定我在这里做错了什么,也不确定如何严格显示该输出中的ipv4 ip地址。您必须遍历列表标准行并将字符串拆分到列表中。试试这个:
- debug:
msg: "{{ item.split(',') | ipv4('address') }}"
loop: "{{smm_output.stdout_lines}}"
您还可以仅使用IPv4创建单独的阵列
- set_fact:
ip4: []
- set_fact:
ip4: "{{ ip4 + (item.split(',') | ipv4('address') )}}"
loop: "{{smm_output.stdout_lines}}"
- debug:
var: ip4
应产生以下输出:
TASK [debug] ***********************************************************************************************************************************************************************************************************
ok: [127.0.0.1] => {
"ip4": [
"10.240.18.20",
"10.240.23.34"
]
}
所以我按照你的建议使用。输出如下:TASK[debug]ok:[10.240.18.57]=>{msg:[fe80::a94:efff:fe50:b516%eth0,10.240.18.20,fe80::a94:efff:fe71:d996%vlan.4,10.240.23.34,fe80::a94:efff:fe71:daa6%vlan.4,10.240.23.35]}TASK[debug]ok:[10.240.18.57]=>item=None=>{msg:[10.240.18.20]]=>item=None=>{msg:[10.240.23.34]}好的:[10.240.18.57]=>item=None=>{msg:[10.240.23.35]}我如何摆脱这个item=None?对不起,不知道如何在评论中格式化文本。你能给我发送下面任务的输出吗?调试:msg={{{smm_output.stdout_lines}}好的:[10.240.18.57]=>{msg:[fe80:a94:efff:fe50:b516%eth0,10.240.18.20,fe80:a94:efff:fe71:d996%vlan.4,10.240.23.34,fe80:a94:efff:fe71:daa6%vlan.4,10.240.23.35]}奇怪的是,我有ok:[127.0.0.1]=>item=10.240.18.20,fe80:a94:efff:fe50:b516%eth0=>{msg:[10.240.18.20]}好的:[1]=>item=fe80::a94:efff:fe71:d996%vlan.4,10.240.23.34=>{msg:[10.240.23.34]}好的:[127.0.0.1]=>item=fe80::a94:efff:fe71:daa6%vlan.4,10.240.23.=>{msg:[]}