提交 e6bfadcf 作者: martin

华为OBS云后台脚本.

上级 5574897e
#!/bin/bash
# 输入:版本号,原始文件所在文件夹
# 输出:升级包,并上传至OBS
if [ "$#" -ne 2 ]; then
echo "错误: 参数数量不正确。"
echo "用法: $0 版本号 原始文件夹"
echo "例如: $0 4.0.8 ./abc"
exit 1
fi
version=$1
src_dir=$(echo "$2" | sed 's/\(.*\)\(\/\)$/\1/')
# 参数2必须是文件夹
if ! [[ -d "$src_dir" ]]; then
echo "错误: 参数2必须是一个文件夹。"
exit 1
fi
# 判断文件夹内容,必须包含sys_core_law.sql这个文件
if ! [[ -f "$src_dir"/sys_core_law.sql ]]; then
echo "错误: 原始文件夹中不存在sys_core_law.sql文件,请确认原始文件。"
exit 1
fi
function check_env() {
echo "Check wget start"
wget -V >/dev/null && \
(echo 'wget installed,check pass') || \
(echo 'wget not installed now installing' && yum install -y wget && echo 'wget install success' || \
(echo 'install failed and exit' && exit 1))
echo "Check openssl version start"
ssl_version=$(openssl version |awk '{print $2}')
if [[ "${ssl_version:0:5}" != '1.1.1' ]];then
echo "openssl version is $ssl_version ,not fit the request 1.1.1, now start to install"
yum install -y gcc make
wget -q https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz --no-check-certificate
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w || exit 1
# 开始编译安装
./config --prefix=/usr/lib/openssl/openssl
make && make install
# 备份旧的openssl并更新软连接
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -sf /usr/lib/openssl/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/lib/openssl/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/lib/openssl/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
# 重新检查openssl版本
ssl_new_version=$(openssl version |awk '{print $2}')
[[ "${ssl_new_version:0:5}" == '1.1.1' ]] && echo 'openssl update success,check pass' || \
(echo 'openssl install fail and exit' && exit 1)
else
echo "openssl version is fit for the request,check pass"
fi
echo 'check obsutil start'
obsutil_flag=$(obsutil ls -s )
if [[ $obsutil_flag =~ Start* ]] ;then
echo 'obsutil check pass'
else
echo 'obsutil check failed now update'
wget -q https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz && \
tar -xzvf obsutil_linux_amd64.tar.gz && cd obsutil_linux_amd64_* && chmod 755 obsutil && mv obsutil /usr/bin/ && \
obsutil config -i='VEHN7D0TJ9316H8AHCAV' -k='heR353lvSWVPNU8pe2QxDtd8GDsO5L6PGH5eUoQY' \
-e='https://obs.cn-north-1.myhuaweicloud.com'
# 重新检查obsutil
obsutil_new_flag=$(obsutil ls -s )
[[ $obsutil_new_flag =~ Start* ]] && echo 'obsutil update success,check pass' || \
(echo 'obsutil install fail and exit' && exit 1)
fi
}
function make() {
# 创建临时文件夹,并将相关原始文件复制进去,
[[ -d .tmp/AuditUpdate ]] || mkdir -p .tmp/AuditUpdate
if [[ -d .tmp/AuditUpdate ]];then
rm -rf .tmp/AuditUpdate/*
else
mkdir -p .tmp/AuditUpdate
fi
cp "$src_dir"/* .tmp/AuditUpdate/ && echo "复制原始文件成功"
# 判断本地是否存在升级脚本,如无,从obs下载,修改版本号并复制进版本文件夹
for file in {'sys.sh','update.sh','docker_sys.sh','docker_update.sh'};do
[[ -f .tmp/"$file" ]] || wget -q https://zzsn-doc.obs.cn-north-1.myhuaweicloud.com/typora/martin/"$file" -O .tmp/"$file"
sed "s/V4.0.8/V${version}/g" .tmp/"$file" >.tmp/AuditUpdate/"$file" && chmod +x .tmp/AuditUpdate/"$file"
done
# 压缩生成AuditUpdate.tar.gz文件
cd .tmp || (echo "进入.tmp文件夹失败,退出" && exit 1)
tar -zcf - AuditUpdate |openssl des3 -salt -k zzsn9988 | dd of=./AuditUpdate.tar.gz && echo "制作升级包成功" || \
(echo "打包制作失败,退出" && exit 1)
obsutil mkdir obs://zzsn-doc/audit/update/"$version"
obsutil cp AuditUpdate.tar.gz obs://zzsn-doc/audit/update/"$version"/ && echo "上传至OBS成功"
# 清理本地环境
mv AuditUpdate.tar.gz ../"$src_dir"/ && cd .. && rm -rf .tmp
}
check_env && make
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论