【问题标题】:UNIX diff command usuage on puppet execpuppet exec 上的 UNIX diff 命令用法
【发布时间】:2016-08-10 22:27:39
【问题描述】:

我有 2 个 Release.ini 文件:

  • 我正在从存储在 /CodeRootFolder/tmp 位置的 S3 下载一个
  • 和其他在 /DocRootDir 位置

我想验证下载的(即/CodeRootFolder/tmp/Release.ini)文件是否有变化,如果有变化,则通过puppet exec执行rsync命令,如下所示。

错误是如果有变化,它不执行,似乎 diff 返回 1。

exec {'Actual code deployment with rsync':
    command => "rsync ${myclass::CodeRootFolder}/tmp/* ${myclass::DocRootDir}/)",
    #cwd => "${myclass::CodeRootFolder}",
    onlyif => "diff --changed-group-format='%<' --unchanged-group-format='' ${myclass::CodeRootFolder}/tmp/Release.ini ${myclass::DocRootDir}/Release.ini",
    path => ['/opt/rh/php55/root/usr/bin','/opt/rh/php55/root/usr/sbin','/usr/local/sbin','/usr/local/bin', '/sbin/' ,'/bin/', '/usr/sbin/','/usr/bin/'], 
}

我的问题有没有好的解决方案。

提前致谢

【问题讨论】:

    标签: linux bash exec diff puppet


    【解决方案1】:

    错误是如果有变化,它不会执行,它似乎是 diff 返回 1。

    是的,没错。

    Invoking diff

    退出状态 0 表示未发现差异,1 表示有些 发现了差异,2代表麻烦。

    如果你想在有变化的情况下执行命令,你必须使用unless而不是onlyif

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多