需要将输出附加到文件

时间:2019-09-06 06:45:37

标签: linux shell networking ansible

在下面的代码中,将重复运行多达8次,每次输出将有所不同。我需要将该输出保存到文件中,而不必删除先前添加到同一文件的输出。

但是在这里,它将删除先前的输出并将新的输出添加到该文件。

所以输出将仅是最后一个。

能帮我找到解决方法吗?

  - name: save output to config backup directory
    copy:
      content: " {{ output.stdout[0] }}{{output.stdout[1] }}"
      dest: /home/hhh.ghydggxxxx.xx/paxxxx/playbook-xx/vlan351/port_output/{{inventory_hostname}}.txt
    delegate_to: localhost

2 个答案:

答案 0 :(得分:1)

尝试这样的事情,

- name: Add contents to a file and appends the data in file
  lineinfile:
    path: /root/testfile
    line: "{{ output.stdout }}"
    create: yes

此任务将output.stdout行添加到文件中,并且始终将数据追加到文件中而不覆盖内容。

create特殊属性用于创建文件(如果不存在)。

根据您的用例进行配置。我创建了以下示例,

- name: save output to config backup directory
  lineinfile:
    line: " {{ output.stdout[0] }}{{output.stdout[1] }}"
    path: "/home/hhh.ghydggxxxx.xx/paxxxx/playbook-xx/vlan351/port_output/{{inventory_hostname}}.txt"
    create: yes
  delegate_to: localhost

答案 1 :(得分:0)

您可以在文件名的末尾添加ansible变量:{{ansible_date_time.epoch}},例如:

print(summary(data))
print(head(data,10))
print(tail(data,10))
print(sum(complete.cases(data)))

或使用另一个“日期时间”变量:

- name: save output to config backup directory 
  copy: 
    content: "{{ output.stdout[0] }}{{ output.stdout[1] }}" 
    dest: /home/hhh.ghydggxxxx.xx/paxxxx/playbook-xx/vlan351/port_output/{{inventory_hostname}}-{{ ansible_date_time.epoch }}.txt 
  delegate_to: localhost
相关问题