#!/bin/bash #dbUpgrade.sh dbUpdate.sql "192.168.96.36" "root" "xtph9638642" "3306" "/tmp/autoDeploy" "ztupload/stage/sql" sqlFile=$1 dbHost=$2 dbUser=$3 dbPassword=$4 dbPort=$5 tempPath=$6 ossPath=$7 projectName="sql" projectPath=${tempPath}/${projectName} protal=oss function init(){ cd $tempPath if [ ! -d $projectName ]; then mkdir $projectName -p fi } function compareMd5(){ cd $tempPath oriSum=$(md5sum $sqlFile) oriSum="${oriSum% *}" desSum="" echo "origin file $sqlFile md5sum: $oriSum" cd $projectPath if [ ! -f "$sqlFile" ];then cp $tempPath/$sqlFile . return 1 else desSum=$(md5sum $sqlFile) desSum="${desSum% *}" echo "current path: $(pwd)" echo "destination file ${sqlFile} md5sum: ${desSum}" fi if [ ${oriSum} = ${desSum} ];then return 0 else return 1 fi } function replaceAndExec(){ cd $projectPath rm $sqlFile rm sqlOut.log cp $tempPath/$sqlFile . /usr/bin/mysql -u${dbUser} -p${dbPassword} -P${dbPort} -e "$(cat ${sqlFile})" | tee sqlOut.log ossutil cp -f sqlOut.log ${protol}://${ossPath}/${dbHost}/sqlOut.log } function uploadLog() { ctype=$1 identify=$2 count=$3 echo "current user is ${USER}" journalctl -n $count -xe -${ctype} $identify > ${tempPath}/${identify}.log ossutil cp -f ${tempPath}/${identify}.log ${protol}://${ossPath}/${dbHost}/${identify}.log if [ $? -eq 0 ]; then echo "ok: log ${identify} uploaded to oss!" return 0 else echo "error: upload log ${identify} to oss failed!" return 1 fi } function main() { echo " " sleep 5 echo "dbUpgrade start" init compareMd5 result=$? if [ ${result} = 0 ];then echo "local temp file ${sqlFile} is same with ${projectPath},no need to replace" echo "ok: dbUpgrade done" echo " " exit 0 else echo "local temp file $sqlFile is different from ${projectPath}, will replace and execusing..." fi replaceAndExec result=$? if [ $result = 0 ];then echo "ok: replace and execuse done" else echo "error: replace and execuse faild" exit 0 fi sleep 3 uploadLog t autoDeploy 100 sleep 1 } main