autoDeploy/checkService.sh
2025-02-25 21:52:14 +08:00

126 lines
2.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
## Usage
# 如果虚机上的shell里面不能执行sudu这个脚本就能派上用场在root用户下执行此脚本也就绕过sudo限制了
## ./checkService.sh ztsjxxxt.jar "/usr/local/jar" ztsjxxxt "/home/ubuntu" "production/investigate/backEnd"
fileName=$1
projectPath=$2
serviceName=$3
workPath=$4
ossLogPath=$5
preName="${fileName%.*}"
protal=oss
PATH=PATH:/usr/bin:/usr/sbin:/usr/local/bin
if [ ! -d $workPath ]; then
echo workPath $workPath not exist!
exit 1
fi
function uploadLog()
{
ctype=$1
identify=$2
count=$3
echo "current user is ${USER}"
echo "current log is " ${workPath}/${identify}.log
journalctl -n $count -xe -${ctype} $identify | grep -wv " at " > ${workPath}/${identify}.log
ossutil cp -f ${workPath}/${identify}.log ${protol}://${ossLogPath}/logs/${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 compare(){
cd $workPath
echo "current path: $(pwd)"
if [ ! -f "$fileName" ];then
echo "checkService 文件 $fileName 不存在1!"
return 1
fi
oriSum=$(md5sum $fileName)
oriSum="${oriSum% *}"
echo "origin local temp file $fileName md5sum: |${oriSum}|"
if [ ! -d "$projectPath" ]; then
echo "文件夹 $projectPath 不存在!"
return -1
fi
cd $projectPath
desSum=""
if [ ! -f "$fileName" ];then
cp $workPath/$fileName .
return 0
else
desSum=$(md5sum $fileName)
desSum="${desSum% *}"
echo "current path: $(pwd)"
echo "locfile in $projectPath ${fileName} md5sum: |${desSum}|"
fi
if [ ${oriSum} = ${desSum} ];then
#journalctl -n 1000 -xe -t autoDeploy > ${workPath}/autoDeploy.log
return 0
else
echo $oriSum > ${workPath}/${fileName}_md5.txt
return 1
fi
}
function restart(){
sleep 4
systemctl restart $serviceName
if [ $? -ne 0 ]; then
echo "error: systemctl restart ${serviceName} failed!"
sleep 3
uploadLog t "autoDeploy" 100
exit 0
fi
echo "ok: systemctl restart ${serviceName} success!"
ossInfoTempPath=${workPath}/${fileName}_oss.info
ossInfoProjectPath=${projectPath}/${fileName}_oss.info
echo ossInfoTempPath: $ossInfoTempPath
echo ossInfoProjectPath: $ossInfoProjectPath
rm -f ${ossInfoProjectPath}
cp ${ossInfoTempPath} ${projectPath}
cp ${workPath}/${fileName}_md5.txt ${projectPath}
}
function main(){
echo " "
echo "start checkService service"
compare
result=$?
echo "result $result"
if [ $result = 0 ];then
# uploadLog
echo "local temp file ${fileName} is same with file in ${projectPath} no need to replace"
echo "ok: checkService done"
echo " "
exit 0
elif [ $result = 1 ]; then
echo "local temp file $fileName is different from ${projectPath}, will replace..."
else
exit 0
fi
restart
sleep 45
uploadLog u $serviceName 500
echo "ok: checkService done"
echo " "
exit 0
}
main