【问题标题】:How to compare last modified time of a file in ansible如何在ansible中比较文件的最后修改时间
【发布时间】:2019-07-29 10:30:28
【问题描述】:

我有一个文件的最后修改时间显示为“1563886751.38”(带有 stat 和 mtime)。我想在运行 playbook 时检查时间是否相同。

我已将变量定义为 file_time: 1563872351。 我想检查这个值是否存在于 mtime 中。

vars: 
file_date: 1563872351

- name: test
    stat:
     path: /tmp/logrotate/testx1
    register: sym

- debug:
   msg: "{{same}}"
  when: sym.stat.mtime.find(file_date) != -1

但我收到以下错误:

'dict object' has no attribute 'find'

我看到没有属性查找,但有什么方法可以做到这一点吗?我需要检查它是否包含值,不等于。

【问题讨论】:

    标签: time ansible


    【解决方案1】:

    这可以通过将两个值都转换为字符串并使用in 运算符来实现:

        - debug:
            msg: same
          when: file_date|string in sym.stat.mtime|string
    

    我不知道你会用它来做什么,但也许这对你来说是一个更好的方法:

        - debug:
            msg: same
          when: sym.stat.mtime|int == file_date
    

    【讨论】:

    • 谢谢,如果它们不一样,我需要打印最后修改时间。如果我打印它是浮动的,你知道如何以日期格式打印吗?
    • 是的,试试这个将纪元转换为日期字符串:{{ '%Y-%m-%d %H:%M:%S' | strftime(sym.stat.mtime) }} - 您可以根据需要使用格式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 1970-01-01
    • 2010-10-05
    • 2016-09-06
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多