Ansible:需要帮助打印没有/n的消息,我已经在描述中给出了代码和当前输出



需要输出帮助:下面的输出需要逐行打印,不带n..代码和实际输出粘贴在这篇文章

msg": "19:19:11.445 UTC时间星期四2022年7月07日n1657235951 n1657235051 n19:04:11 EDT星期四2022年7月07日n2022年7月07日19:04:11n">

---
- name: Cisco NXOS
hosts: all
connection: network_cli
gather_facts: false
vars:
- cmdlist1: sh clock 
- ansible_python_interpreter: /usr/bin/python3
- ansible_network_os: nxos
- cmdlist2: sh logging | include 2/3
tasks:
- name: Execute command
nxos_command:
commands: "{{ cmdlist1 }}"
register: output
- set_fact:
arr: "{{ output.stdout_lines[0][1] }}"
- debug:
msg: | 
{{ arr | trim }}
{{ t1 }} 
{{ t2 }} 
{{ t3 }}
{{ t4 }}
# msg: "{{ msg.split('n') }}" 
vars:
t1: "{{ (arr|to_datetime('%H:%M:%S.%f %Z %a %b %d %Y')).strftime('%s') }}"
t2: "{{ t1|int - 15 * 60 }}"
t3: "{{ '%H:%M:%S %Z %a %b %d %Y'|strftime(t2) }}"
t4: "{{ '%Y %b %d %H:%M:%S' | strftime(t2) }}"
================
OUTPUT
[LABPC@lab-jump-host dow]$ ansible-playbook interfaceflappingdup.yml -i inventory1.txt --limit nxos --verbose
Using /etc/ansible/ansible.cfg as config file
PLAY [Cisco NXOS] ******************************************************************************************************************************************************************************************
TASK [Execute command] *************************************************************************************************************************************************************************************
ok: [nxos] => {"changed": false, "stdout": ["Time source is NTPn19:19:11.445 UTC Thu Jul 07 2022"], "stdout_lines": [["Time source is NTP", "19:19:11.445 UTC Thu Jul 07 2022"]]}
TASK [set_fact] ********************************************************************************************************************************************************************************************
ok: [nxos] => {"ansible_facts": {"arr": "19:19:11.445 UTC Thu Jul 07 2022"}, "changed": false}
TASK [debug] ***********************************************************************************************************************************************************************************************
ok: [nxos] => {
"msg": "19:19:11.445 UTC Thu Jul 07 2022n1657235951 n1657235051 n19:04:11 EDT Thu Jul 07 2022n2022 Jul 07 19:04:11n"
}
PLAY RECAP *************************************************************************************************************************************************************************************************
nxos                       : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 


- debug:
msg: 
- "currenttime: {{arr}}"
- " timetostring: {{ t1 }}"
- " currentimeless15min: {{t2}}" 
- " back15min: {{t3}}"
-  "needmin: {{t4}}"

我已经在我的代码中改变了上面的部分,并得到了预期的输出。任务(调试 ] ***********************************************************************************************************************************************************************************************

ok: [nxos] => {
"msg": [
"currenttime: 06:47:12.579 UTC Fri Jul 08 2022", 
" timetostring: 1657277232", 
" currentimeless15min: 1657276332", 
" back15min: 06:32:12 EDT Fri Jul 08 2022", 
"needmin: 2022 Jul 08 06:32:12"
]
}

啊,我看到你在你自己的回答中张贴了一个解决方案,但我只是想指出最初问题的原因。

在YAML中,使用|指定多行字符串会在每个换行符处产生换行符(n)。在Ansible调试输出中,字符串被逐字解析,因此它包含换行符,而不是实际的换行符。

通过将每个消息作为提供给msg的列表中的单个项目进行处理,您的解决方案适用于您的情况。我认为没有一种方法可以通过使用其他多行YAML说明符来获得您正在寻找的结果。这里有一个答案,详细解释了YAML中的多行字符串,它是…复杂:

我如何打破一个字符串在YAML多行?

相关内容

  • 没有找到相关文章

最新更新