linux - UNIX diff 命令在 puppet exec 上的使用

标签 linux bash exec diff puppet

我有 2 个 Release.ini 文件:

  • 我从 S3 下载的一个存储在/CodeRootFolder/tmp 位置
  • 和其他在/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/'], 
}

我的问题有好的解决办法吗

提前致谢

最佳答案

The error is if there change, it does not executing, it seems to as diff returns 1.

是的,没错。

Invoking diff

An exit status of 0 means no differences were found, 1 means some differences were found, and 2 means trouble.

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

关于linux - UNIX diff 命令在 puppet exec 上的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884542/

相关文章:

python - 如何直接引用Python3中的exec编译函数?

linux - docker journald 日志记录驱动程序也会导致大量日志记录到/var/log/syslog 和/var/log/kern.log

python - 如何在 Linux 上查看 Python 文档?

linux - 在 SunOS 中使用哪个命令相当于 linux 中的 zgrep

c++ - 在分离线程中执行 - 终止进程(c++ std 11)

java - 在 Java 中使用 Runtime.exec()

linux - ImageMagick - 裁剪、调整大小和连接两张图片

linux - 链接没有soname,链接器名称的第3方共享库

linux - Linux 中检查文件是否存在的正确方法

linux - MV : cannot stat error : No such file or directory error