【问题标题】:Ansible command to get yum historyAnsible 命令获取 yum 历史记录
【发布时间】:2022-01-20 12:52:31
【问题描述】:

你好 Ansible 新手...我正在寻找一种可靠的方法来获取最后的 yum 更新日期并将其写入文本文件(稍后成为网页的一部分)。我知道原始命令: hostname && yum history | awk 'NR==5 { print $7, $8 }' 这可以从常规 bash shell(RHEL 版本 7 和 8)正常运行,但是,当我尝试将其放入 ansible ad-hoc 命令时,我会收到错误:

localhost | FAILED | rc=1 >>
server: cmd. line:1: NR==5 { print ,  }
awk: cmd. line:1:               ^ syntax error
awk: cmd. line:1: NR==5 { print ,  }
awk: cmd. line:1:                  ^ syntax error
awk: cmd. line:1: NR==5 { print ,  }
awk: cmd. line:1:                   ^ unexpected newline or end of stringnon-zero return code 

有什么建议吗?我猜逃避可能会有所帮助,但此时我不确定要逃避什么?

【问题讨论】:

    标签: awk ansible adhoc


    【解决方案1】:

    如果您想使用 Ansible ad hoc 命令从所有主机收集所有信息并将其整合到本地文件中,您必须在 awk 命令中添加 \ 前缀来转义 $ .

    ansible all -m ansible.builtin.shell -a \
           "hostname && yum history | awk 'NR==5 { print \$7, \$8 }'" \
           >> result.txt
    

    【讨论】:

    • 谢谢你,Romain 这工作完美!
    【解决方案2】:

    我正在寻找一种可靠的方法来获取最后的 yum 更新日期并将其写入文本文件

     - shell: "yum history | awk 'NR==5 { print $7, $8 }' >> /tmp/yum_history.txt"
       args:
         warn: false
    

    【讨论】:

    • 我认为目标是从多个主机收集历史并将结果写入单个文件。这就是为什么在原始命令中有一个hostname。您的提案将在每个主机上的文件中写入 yum 历史记录。
    • 啊,我不清楚。我以为他只是在正确转义引号等方面遇到问题,谢谢。
    • 我不是很清楚,但我希望在临时命令中使用它。 @Romain,您是正确的,因为我希望它在运行命令的服务器主机上写入 1 个文件-我需要做什么来修改凯文的答案以实现这一目标?顺便说一句,谢谢你们!
    猜你喜欢
    • 2013-05-12
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多