我正在运行一个命令来获取 tomcat 的状态并将其注册到一个变量中。我如何提取该命令的特定输出并将其放入变量中以进一步检查
玩 -
- name: Check the State og tomcat service
shell: "svcs tomcat"
register: tomcat_status
- name: Show captured processes
debug:
msg: "{{ tomcat_status.stdout_lines|list }}"
上面的输出是 -
server1 ok: {
"changed": false,
"msg": [
"STATE STIME FMRI",
"online 20:11:48 svc:/network/tomcat:tomcat"
]
}
我如何在这里提取 STATE 的值?我想知道它是在线还是禁用或关闭等。
注意 - 使用 -vvvv 输出
server1 done: {
"changed": true,
"cmd": "svcs tomcat",
"delta": "0:00:00.025711",
"end": "2020-05-11 12:43:43.323017",
"invocation": {
"module_args": {
"_raw_params": "svcs tomcat",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true,
"warn": false
}
},
"rc": 0,
"start": "2020-05-11 12:43:43.297306",
"stderr": "",
"stderr_lines": [],
"stdout": "STATE STIME FMRI\nonline 20:11:48 svc:/network/tomcat:tomcat",
"stdout_lines": [
"STATE STIME FMRI",
"online 20:11:48 svc:/network/tomcat:tomcat"
]
}
根据您的debug
关于,tomcat_status.stdout_lines
是一个列表(您在|list
这里不需要过滤器,因为它已经是一个列表),如下所示:
["STATE STIME FMRI", "online 20:11:48 svc:/network/tomcat:tomcat"]
要获取该STATE
值,您需要第二行的第一个字段。所以:
- set_fact:
tomcat_state: "{{ tomcat_status.stdout_lines.1.split().0 }}"
这需要第二行 ( tomcat_status.stdout_lines.1
) 然后在空格 ( .split()
)上拆分它,然后获取第一个值 ( .0
)。
这是一个完整的测试:
- hosts: localhost
vars:
tomcat_status:
stdout_lines:
- "STATE STIME FMRI"
- "online 20:11:48 svc:/network/tomcat:tomcat"
tasks:
- set_fact:
tomcat_state: "{{ tomcat_status.stdout_lines.1.split().0 }}"
- debug:
var: tomcat_state
运行该剧本会导致:
PLAY [localhost] *****************************************************************************
TASK [set_fact] ******************************************************************************
ok: [localhost]
TASK [debug] *********************************************************************************
ok: [localhost] => {
"tomcat_state": "online"
}
PLAY RECAP ***********************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句