首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Ansible比较两个文件

使用Ansible比较两个文件
EN

Stack Overflow用户
提问于 2018-05-31 00:17:05
回答 4查看 22.4K关注 0票数 6

我正在努力找出如何比较两个文件。我尝试了几种方法,包括这种方法,错误如下:

失败!=> {"msg":“在配置的模块路径中找不到模块差异。此外,还缺少核心模块。如果这是签出,请运行”“git--rebase”“更正此问题。”}

这是比较两个文件并确保内容相同的最佳实践,还是有更好的方法?

提前谢谢。

我的攻略:

代码语言:javascript
复制
- name: Find out if cluster management protocol is in use
      ios_command:
        commands:
          - show running-config | include ^line vty|transport input
      register: showcmpstatus
 - local_action: copy content="{{ showcmpstatus.stdout_lines[0] }}" dest=/poc/files/{{ inventory_hostname }}.result
    - local_action: diff /poc/files/{{ inventory_hostname }}.result /poc/files/transport.results
      failed_when: "diff.rc > 1"
      register: diff
 - name: debug output
      debug: msg="{{ diff.stdout }}"
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-05-31 18:27:43

为什么不使用stat来比较这两个文件?这只是一个简单的例子:

代码语言:javascript
复制
- name: Get cksum of my First file
  stat:
    path : "/poc/files/{{ inventory_hostname }}.result"
  register: myfirstfile

- name: Current SHA1
  set_fact:
    mf1sha1: "{{ myfirstfile.stat.checksum }}"

- name: Get cksum of my Second File (If needed you can jump this)
  stat:
    path : "/poc/files/transport.results"
  register: mysecondfile

- name: Current SHA1
  set_fact:
    mf2sha1: "{{ mysecondfile.stat.checksum }}"

- name: Compilation Changed
  debug:
    msg: "File Compare"
  failed_when:  mf2sha1 != mf1sha1
票数 13
EN

Stack Overflow用户

发布于 2018-05-31 00:43:35

您的"diff“任务缺少shell关键字,Ansible认为您希望使用diff模块。

我还认为diff (作为注册任务结果的变量的名称)会导致混淆,更改为diff_result或其他什么。

代码(示例):

代码语言:javascript
复制
  tasks:
  - local_action: shell diff /etc/hosts /etc/fstab
    failed_when: "diff_output.rc > 1"
    register: diff_output

  - debug:
      var: diff_output

希望能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2021-04-28 16:58:35

一个略短版本的“imjoseangel”答案,避免设定事实:

代码语言:javascript
复制
  vars:
    file_1: cats.txt
    file_2: dogs.txt

  tasks:
  - name: register the first file
    stat:
      path: "{{ file_1 }}"
      checksum: sha1
      get_checksum: yes
    register: file_1_checksum

  - name: register the second file
    stat:
      path: "{{ file_2 }}"
      checksum: sha1
      get_checksum: yes
    register: file_2_checksum

  - name: Check if the files are the same
    debug: msg="The {{ file_1 }} and {{ file_2 }} are identical"
    failed_when: file_1_checksum.stat.checksum != file_2_checksum.stat.checksum
    ignore_errors: true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50609345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档