文本输出中删除换行符

问题描述 投票:0回答:1

我有一个很长的配置文件,我从各种设备中提取,并且需要它完全,因为命令输出给了我返回。然而,当我将输出写入文件时,Ansible 似乎正在删除换行符。

    - name: Pull the running-config...
      cisco.ios.ios_command:
        commands: show running-config brief
      register: running_output
...
...
    - name: Copy running_config data to file...
      ansible.builtin.copy:
        content: "{{  running_output.stdout_lines  }}"
        dest: "/etc/ansible/backups/{{  inventory_hostname  }}/running_config.txt"

当我调试输出时,我确实看到标准输出中的换行符被删除。但我也看到了不同的输出(stdout_lines),因为配置应该是而不是被大量的“替换” “s.

有没有办法确保我发送到文件的输出中存在换行符?或者确保替换它们的字符被正确记录并格式化?

ansible cisco cisco-ios
1个回答
0
投票

简短回答:使用 stdout 而不是 stdout_lines

详细信息:给出以下文件进行测试

shell> cat /tmp/config.txt
line1
line2
line3

读取它并注册变量running_output

    - command: cat /tmp/config.txt
      register: running_output

给予

  running_output:
    ansible_facts:
      discovered_interpreter_python: /usr/bin/python3
    changed: true
    cmd:
    - cat
    - /tmp/config.txt
    delta: '0:00:00.007317'
    end: '2023-11-02 02:15:50.172897'
    failed: false
    msg: ''
    rc: 0
    start: '2023-11-02 02:15:50.165580'
    stderr: ''
    stderr_lines: []
    stdout: |-
      line1
      line2
      line3
    stdout_lines:
    - line1
    - line2
    - line3

如果您使用列表running_output.stdout_lines

    - copy:
        dest: /tmp/running_config.txt
        content: "{{ running_output.stdout_lines }}"

您将获得清单

shell> cat /tmp/running_config.txt 
["line1", "line2", "line"]

使用 running_output.stdout 代替

    - copy:
        dest: /tmp/running_config.txt
        content: "{{ running_output.stdout }}"

你会得到

shell> cat /tmp/running_config.txt 
line1
line2
line3
© www.soinside.com 2019 - 2024. All rights reserved.