南大通用GBase 8a检查2个包含svn文件新旧的脚本

本文提供了1个用于判断2个GBase 8a数据库版本哪个更新的脚本。如果新版本的svn数值比老的还小,则抛出警告信息。

脚本

输入2个包含svn信息的文件,其中第二个文件是最新的。如果新的svn比老的还小,则报警告。

[root@gbase_rh7_001 gcinstall]# cat checksvn.sh
#/bin/bash
file1=$1
file2=$2

if [ $# -ne 2 ]; then
  echo "Please special two svn file, Second is newer. Otherwise print Waring info"
  echo "请输入2个svn文件名作为参数,第二个svn文件版本更加新,否则报警告信息"
  exit 0
fi

function getValue() {
  filename=$1
  key=$2
  myresult=`grep ${key} ${filename} | awk -F[:=] '{print $2}'|sed 's/\s//g'`
}

keys=(install_svn autobuild_svn monit_svn gcrcman_svn corosync_svn gcware_svn gcluster_svn logCollector_svn GCMonit_svn gnode_svn)

for key in ${keys[*]} ; do
  getValue $file1 $key
  val1=$myresult

  getValue $file2 $key
  val2=$myresult

  echo -n $key...

  if [ $val2 -lt $val1 ] ; then
    echo WARING:$val1 ">" $val2;
  else
    echo "OK"
  fi
done;

测试数据

新旧的版本信息中,gcluster_svn的信息不同,老的是125743,新的是125742,新的比老的svn号更小,则会爆出WARNING。

老版本信息

[root@gbase_rh7_001 gcinstall]# cat BUILDINFO
release_version =  9.5.2.36
os_ventor =  redhat
build_version = release
license = none
install_svn:125703
autobuild_svn:125703
monit_svn: 76343
gcrcman_svn: 124109
corosync_svn: 125515
gcware_svn: 125515
gcluster_svn: 125743
logCollector_svn: 94134
GCMonit_svn: 125355
gnode_svn: 125743

新版本信息

[root@gbase_rh7_001 gcinstall]# cat BUILDINFO_2
release_version =  9.5.2.36
os_ventor =  redhat
build_version = release
license = none
install_svn:125703
autobuild_svn:125703
monit_svn: 76343
gcrcman_svn: 124109
corosync_svn: 125515
gcware_svn: 125515
gcluster_svn: 125742
logCollector_svn: 94134
GCMonit_svn: 125355
gnode_svn: 125743

运行结果

[root@gbase_rh7_001 gcinstall]# sh checksvn.sh BUILDINFO BUILDINFO_2
install_svn...OK
autobuild_svn...OK
monit_svn...OK
gcrcman_svn...OK
corosync_svn...OK
gcware_svn...OK
gcluster_svn...WARING:125743 > 125742
logCollector_svn...OK
GCMonit_svn...OK
gnode_svn...OK
[root@gbase_rh7_001 gcinstall]