在 Ansible 中运行 json_query 时从 ASN.1 格式转换时间

问题描述

我有这个剧本可以从本地文件夹中查找所有证书并检查证书到期日期。虽然剧本工作得很好,但显示的时间是 ASN.1 格式。我想以人类可读的格式显示时间。使用 json_query 时我无法做到这一点。寻找包含人类可读日期时间和文件名的最佳解决方案。

 - hosts: localhost
   gather_facts: true
   tasks:
     - name: list cert files
       find:
         paths: ../CertsFolder
         file_type: file
         patterns: "*.cer"
         recurse: yes
       register: find_files
 
     - name: "Test for certificate validity for 90 days"
       openssl_certificate_info:
         path: "{{ item.path }}"
         valid_at:
           point_1: "+90d"
       register: certs_info
       with_items:
         - "{{ find_files.files }}"
 
     - name: Notify via Slack
       slack:
         token: "{{ slack_token }}"
         msg: |
           "Certificate expiry alert for the following certificate(s) : {{ item }} "
         channel: "{{ slack_channel }}"
         domain: "{{ slack_domain }}
         validate_certs: 'false'
       loop:
         - "{{ certs_info.results | json_query(jmesquery) | to_yaml }}"
       vars:
         jmesquery: "[*].{CertificateName: path,Expired: expired,ExpiryDate: not_after }"
       ignore_errors: true

电流输出

Certificate expiry alert for the following certificate(s) : -{CertificateName: certname.cer,Expired: true,ExpiryDate: 20210223120000Z}
-{CertificateName: Newcertname1.cer,ExpiryDate: 20210123120000Z}
-{CertificateName: webserver.cer,ExpiryDate: 20210325120000Z}

希望将 20210325120000Z 切换为 2021-03-25 12:00:00 之类的内容或易于阅读的内容

按照 jmespath 中的建议尝试了 regex_replace,但出现以下错误

"msg": "JMESPathError in json_query filter plugin:\nBad jmespath expression: UnkNown token

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...