126 lines
2.9 KiB
Bash
126 lines
2.9 KiB
Bash
![]() |
#!/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
|