【发布时间】:2024-01-19 07:26:01
【问题描述】:
为了从这个 json 文件中收集数据,我制作了一个 ansible playbook
{
"validacion_user": {
"stdout_lines": [
"",
"Account name: root",
"Description: root",
"Enabled: No",
"Password Last Change Date: Thu Feb 14 2019 (UTC)",
"Password Expiration Date: Not Applicable (UTC)",
"Locked: No",
"Role: root",
"AD membership: 0-255",
"Home AD: 0",
"Day Time Access: N/A",
"",
"Account name: admin",
"Description: Administrator",
"Enabled: Yes",
"Password Last Change Date: Thu Feb 14 2019 (UTC)",
"Password Expiration Date: Not Applicable (UTC)",
"Locked: No",
"Role: admin",
"AD membership: 0-255",
"Home AD: 0",
"Day Time Access: N/A",
"",
"Account name: user",
"Description: User",
"Enabled: Yes",
"Password Last Change Date: Thu Feb 14 2019 (UTC)",
"Password Expiration Date: Not Applicable (UTC)",
"Locked: No",
"Role: user",
"AD membership: 0",
"Home AD: 0",
"Day Time Access: N/A",
""
]
}
}
这是我写的剧本
---
- name: User, Role and Status Playbook
hosts: localhost
gather_facts: false
tasks:
- name: Obtener Usuario, rol y estado
uri:
url: http://192.168.1.20:80/data_broadcade.json
validate_certs: no
return_content: yes
register: userbroadcade
- debug:
var: userbroadcade
- name: Query broadcad
set_fact:
userdata_broadcade: "{{ userbroadcade.json.validacion_user.stdout_lines | json_query(query1) }}"
vars:
query1: "[*].{User: 'Account Name' ,Rol: Role, Estado: Enabled }"
# - copy: content={{userdata_broadcade | replace('Yes','Activado') | replace('No','Desactivado')}} dest=/root/ansible/broadcade.txt
- name: Debug
debug:
var: userdata_broadcade
但是当我执行 playbook 时,它会发送一个 null 和一个 Account Name 字符串:
我认为问题在于该文件的结构不如 Json,我一直在搜索,但我找不到如何获取帐户名称、启用和角色(注释行是它们工作时的数据导出)
有人知道如何导出这些字段吗?
('userdata_broadcade' 的路由没问题,因为如果我只在 query1 上放“[*]”,它就会显示所有数据)
【问题讨论】:
-
您想获得哪个“帐户名称”?其中有 root、admin 和 user 三个。