我们曾经通过SVN使我们的Nagios配置保持最新,用户提交他们的更改并且每15分钟运行一次脚本.脚本检查更新,然后检查这些更新解析配置检查,然后重新加载配置.很好,很简单,做得很好.
我们最近搬到了GIT,作为更广泛的GIT迁移到其他项目的一部分,我很难重新编写这个脚本来匹配.
这是原始的SVN版本:
cd /usr/local/nagios RESULT=`svn update | grep Updated | wc -l` echo $RESULT if [ "$RESULT" != "0" ]; then /etc/init.d/nagios reload fi cd -
到目前为止,这是我对GIT的最大努力:
cd /usr/local/nagios RESULT=`git pull 2>&1 | grep Unpacking | wc -l` echo $RESULT if [ "$RESULT" != "0" ]; then /etc/init.d/nagios reload fi cd -
我遇到的问题是我似乎无法使输出可解析,所以我可以匹配它.我想通过检查本地工作副本中的最新提交,然后检查远程最近的提交是否不同来进行不同的路由.我无法弄清楚如何获取这些信息.
我对GIT很陌生,这让我疯狂,所以我非常感谢您的任何帮助!
您可以在拉动之前和之后检查本地分支的提示(a.k.a.HEAD)是否发生了变化.
cd /usr/local/nagios before=$(git rev-parse HEAD) git pull after=$(git rev-parse HEAD) if [[ $before != $after ]]; then service nagios reload fi