autoDeploy/checkService.sh

126 lines
2.9 KiB
Bash
Raw Permalink Normal View History

2025-02-25 21:52:14 +08:00
#!/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