如何只打印Ansible标准输出的某一行



我只需要打印命令stdout的一部分。

剧本

- name: Status TWC
shell: "systemctl status twcloud"
register: twc_result

- debug:
var: twc_result.stdout_lines

结果如下

twc_result.stdout_lines": [
"● twcloud.service - No Magic Teamwork Cloud",
"   Loaded: loaded (/etc/systemd/system/twcloud.service; enabled; vendor preset: disabled)",
"   Active: active (running) since Tue 2023-04-04 16:33:54 UTC; 2s ago",
" Main PID: 2713958 (java)",
"    Tasks: 59 (limit: 823113)",
"   Memory: 250.5M",
"   CGroup: /system.slice/twcloud.service",
"           └─2713958 /etc/alternatives/jre_11/bin/java -Xmx8192m -Desi.system.config=configuration/application.conf -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Dlogback.configurationFile=configuration/logback.xml -Desi.shiro.config=configuration/shiro.ini -Dfile.encoding=utf-8 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=2468 -Dcom.sun.management.jmxremote.rmi.port=2468 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED -Djava.io.tmpdir=/home/twcloud/.twcloud/2022x/tmp -classpath 

还没完没了。

我想要的只是这一行的输出:

"   Active: active (running) since Tue 2023-04-04 16:33:54 UTC; 2s ago",

我如何只打印这个?我不需要打印那些乱七八糟的东西。

我已经尝试了很多我在网上找到的正则表达式组合,但我一定没有做对。它们要么不定义变量,要么完全中断游戏。

更新:在我读这些之前,我自己弄清楚了。为了得到我需要的代码行,我只需要修改调试模块。

- debug:
msg: "{{ twc_result.stdout_lines[2] }}"
我也会研究一下你们的解决方案。谢谢你。

您可以尝试使用条件循环来显示来自数组twc_result.stdout_lines的特定值。

样本yml:

- name: Status TWC
shell: "systemctl status twcloud"
register: twc_result
- name: show specific value
debug:
msg: "{{ item }}"
when: item.find("Active:") != -1
loop: twc_result.stdout_lines

如果您想将其存储在变量中并控制输出。你可以试试下面的命令:

- name: Status TWC
shell: "systemctl status twcloud"
register: twc_result
- name: show specific value
set_fact:
ansible_var: "{{ item }}"
when: item.find("Active:") != -1
loop: twc_result.stdout_lines
- name: debug
debug:
var: active_var

一种消极的情况可能是当twc_result.stdout_lines数组中的每个值的条件都失败时,我们将获得VARIABLE IS NOT DEFINED用于调试任务。

你可以从这里了解更多关于循环和条件的信息循环和条件

希望这就是你要找的。谢谢。

相关内容

  • 没有找到相关文章

最新更新