You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHLANG=en_US.UTF-8
Btapi_Url='http://www.example.com'
if [ ! -d /www/server/panel/BTPanel ];then echo "=============================================" echo "错误, 5.x不可以使用此命令升级!" echo "5.9平滑升级到6.0的命令:curl http://download.bt.cn/install/update_to_6.sh|bash" exit 0;fi
if [ ! -f "/www/server/panel/pyenv/bin/python3" ];then echo "=============================================" echo "错误, 当前面板过旧/py-2.7/无pyenv环境,无法升级至最新版面板" echo "请截图发帖至论坛www.bt.cn/bbs求助" exit 0;fi
if [ -f "/etc/redhat-release" ];then Centos6Check=$(cat /etc/redhat-release | grep ' 6.' | grep -iE 'centos|Red Hat') if [ "${Centos6Check}" ];then echo "Centos6不支持升级宝塔面板,建议备份数据重装更换Centos7/8安装宝塔面板" exit 1 fi Centos8Check=$(cat /etc/redhat-release | grep ' 8.' | grep -iE 'centos|Red Hat') if [ "${Centos8Check}" ];then if [ ! -f "/usr/bin/python" ] && [ -f "/usr/bin/python3" ] && [ ! -d "/www/server/panel/pyenv" ]; then ln -sf /usr/bin/python3 /usr/bin/python fi fifi
mypip="pip"env_path=/www/server/panel/pyenv/bin/activateif [ -f $env_path ];then mypip="/www/server/panel/pyenv/bin/pip"fi
if [ -f "/www/server/panel/data/down_url.pl" ];then D_NODE_URL=$(cat /www/server/panel/data/down_url.pl|grep bt.cn)fi
if [ -z "${D_NODE_URL}" ];then D_NODE_URL="download.bt.cn"fi
download_Url=$D_NODE_URL
Set_Centos7_Repo(){ if [ -f "/etc/yum.repos.d/docker-ce.repo" ];then mv /etc/yum.repos.d/docker-ce.repo /etc/yum.repos.d/docker-ce.repo_backup fi MIRROR_CHECK=$(cat /etc/yum.repos.d/CentOS-Base.repo |grep "[^#]mirror.centos.org") if [ "${MIRROR_CHECK}" ] && [ "${is64bit}" == "64" ];then \cp -rpa /etc/yum.repos.d/ /etc/yumBak sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-*.repo fi
TSU_MIRROR_CHECK=$(cat /etc/yum.repos.d/CentOS-Base.repo |grep "tuna.tsinghua.edu.cn") if [ "${TSU_MIRROR_CHECK}" ];then \cp -rpa /etc/yum.repos.d/ /etc/yumBak sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo sed -i 's|#baseurl=https://mirrors.tuna.tsinghua.edu.cn|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-*.repo sed -i 's|#baseurl=http://mirrors.tuna.tsinghua.edu.cn|baseurl=http://vault.epel.cloud|g' /etc/yum.repos.d/CentOS-*.repo fi ALI_CLOUD_CHECK=$(grep Alibaba /etc/motd) Tencent_Cloud=$(cat /etc/hostname |grep -E VM-[0-9]+-[0-9]+) if [ "${ALI_CLOUD_CHECK}" ] || [ "${Tencent_Cloud}" ];then return fi yum install tree -y if [ "$?" != "0" ] ;then TAR_CHECK=$(which tree) if [ "$?" == "0" ] ;then \cp -rpa /etc/yum.repos.d/ /etc/yumBak if [ -z "${download_Url}" ];then download_Url="http://download.bt.cn" fi curl -Ss --connect-timeout 5 -m 60 -O ${download_Url}/src/el7repo.tar.gz rm -f /etc/yum.repos.d/*.repo tar -xvzf el7repo.tar.gz -C /etc/yum.repos.d/ fi fi
yum install tree -y if [ "$?" != "0" ] ;then sed -i "s/vault.epel.cloud/mirrors.cloud.tencent.com/g" /etc/yum.repos.d/*.repo fi}if [ -f "/etc/redhat-release" ];then Centos7Check=$(cat /etc/redhat-release | grep ' 7.' | grep -iE 'centos|Red Hat') if [ "${Centos7Check}" ];then Set_Centos7_Repo fifisetup_path=/wwwversion=$(curl -Ss --connect-timeout 5 -m 2 $Btapi_Url/api/panel/get_version)if [ -z "$version" ];then version='9.5.0'fiarmCheck=$(uname -m|grep arm)if [ "${armCheck}" ];then version='7.7.0'fi
if [ "$1" ];then version=$1fiwget -T 5 -O /tmp/panel.zip $Btapi_Url/install/update/LinuxPanel-${version}.zipdsize=$(du -b /tmp/panel.zip|awk '{print $1}')if [ $dsize -lt 10240 ];then echo "获取更新包失败,请稍后更新或联系宝塔运维" exit;fi
unzip -o /tmp/panel.zip -d $setup_path/server/ > /dev/nullrm -f /tmp/panel.zipcd $setup_path/server/panel/check_bt=`cat /etc/init.d/bt`if [ "${check_bt}" = "" ];then rm -f /etc/init.d/bt wget -O /etc/init.d/bt $download_Url/install/src/bt7.init -T 20 chmod +x /etc/init.d/btfiecho "=============================================================="echo "正在修复面板依赖问题"rm -f /www/server/panel/*.pycrm -f /www/server/panel/class/*.pyc#pip install flask_sqlalchemy#pip install itsdangerous==0.24
if [ -f "/www/server/panel/pyenv/bin/pip3" ];then btpip_path="/www/server/panel/pyenv/bin/pip3" FlaskV=$($btpip_path list 2>/dev/null|grep "Flask " |awk '{print $2}'|cut -f 1 -d .) piplist_count=$($btpip_path list 2>/dev/null|wc -l) if [ "${FlaskV}" -le "2" ] && [ "${piplist_count}" -le "118" ];then echo "检测到面板运行环境过老,正常尝试修复面板依赖" pyenv_path="/www/server/panel" wget -O $pyenv_path/pyenv/pip.txt $download_Url/install/pyenv/pip-3.7.16.txt -T 5 $pyenv_path/pyenv/bin/pip install -U pip $pyenv_path/pyenv/bin/pip install -U setuptools==65.5.0 $pyenv_path/pyenv/bin/pip install -U wheel==0.34.2 $pyenv_path/pyenv/bin/pip install -r $pyenv_path/pyenv/pip.txt echo "依赖修复完成,如面板仍无法正常访问,请联系宝塔官方人员进行求助" fi
#wget -O pip-packs.txt $download_Url/install/pyenv/pip-packs.txt #PIP_PACKS=$(cat pip-packs.txt) #for P_PACK in ${PIP_PACKS}; #do # btpip show ${P_PACK} > /dev/null 2>&1 # if [ "$?" == "1" ];then # btpip install ${P_PACK} # fi #donefi
pip_list=$($mypip list 2>&1)request_v=$(btpip list 2>/dev/null|grep "requests "|awk '{print $2}'|cut -d '.' -f 2)if [ "$request_v" = "" ] || [ "${request_v}" -gt "28" ];then $mypip install requests==2.27.1 $mypip install chardet==4.0.0fi
NATSORT_C=$(echo $pip_list|grep natsort)if [ -z "${NATSORT_C}" ];then btpip install natsortfi
openssl_v=$(echo "$pip_list"|grep pyOpenSSL)if [ "$openssl_v" = "" ];then $mypip install pyOpenSSLfi
#cffi_v=$(echo "$pip_list"|grep cffi|grep 1.12.)#if [ "$cffi_v" = "" ];then# $mypip install cffi==1.12.3#fi
pymysql=$(echo "$pip_list"|grep pymysql)if [ "$pymysql" = "" ];then $mypip install pymysqlfiGEVENT_V=$(btpip list 2> /dev/null|grep "gevent "|awk '{print $2}'|cut -f 1 -d '.')if [ "${GEVENT_V}" -le "1" ];then /www/server/panel/pyenv/bin/pip3 install -I geventfi
BROTLI_C=$(btpip list 2> /dev/null |grep Brotli)if [ -z "$BROTLI_C" ]; then btpip install brotlifi
PYMYSQL_C=$(btpip list 2> /dev/null |grep PyMySQL)if [ -z "$PYMYSQL_C" ]; then btpip install PyMySQLfi
PY_CRPYT=$(btpip list 2> /dev/null |grep cryptography|awk '{print $2}'|cut -f 1 -d '.')if [ "${PY_CRPYT}" -le "10" ];then btpip install pyOpenSSL==24.1.0 btpip install cryptography==42.0.5fi
PYMYSQL_SSL_CHECK=$(btpython -c "import pymysql" 2>&1|grep "AttributeError: module 'cryptography.hazmat.bindings._rust.openssl'")if [ "${PYMYSQL_SSL_CHECK}" ];then btpip uninstall pyopenssl cryptography -y btpip install pyopenssl cryptographyfi
btpip uninstall enum34 -y
GEOIP_C=$(echo $pip_list|grep geoip2)if [ -z "${GEOIP_C}" ];then btpip install geoip2==4.7.0fi
# PANDAS_C=$(echo $pip_list|grep pandas)# if [ -z "${PANDAS_C}" ];then# btpip install pandas# fi
pymysql=$(echo "$pip_list"|grep pycryptodome)if [ "$pymysql" = "" ];then $mypip install pycryptodomefi
echo "修复面板依赖完成!"echo "==========================================="
echo "安装基础网站流量统计程序..."wget -O site_new_total.sh ${download_Url}/site_total/install.sh &> /dev/null bash site_new_total.sh &> /dev/nullrm -f site_new_total.shecho "安装基础网站流量统计程序完成"
RE_UPDATE=$(cat /www/server/panel/data/db/update)if [ "$RE_UPDATE" -ge "4" ];then echo "2" > /www/server/panel/data/db/updatefi
#psutil=$(echo "$pip_list"|grep psutil|awk '{print $2}'|grep '5.7.')#if [ "$psutil" = "" ];then# $mypip install -U psutil#fi
if [ -d /www/server/panel/class/BTPanel ];then rm -rf /www/server/panel/class/BTPanelfirm -f /www/server/panel/class/*.soif [ ! -f /www/server/panel/data/not_workorder.pl ]; then echo "True" > /www/server/panel/data/not_workorder.plfiif [ ! -f /www/server/panel/data/userInfo.json ]; then echo "{\"uid\":1,\"username\":\"Administrator\",\"address\":\"127.0.0.1\",\"access_key\":\"test\",\"secret_key\":\"123456\",\"ukey\":\"123456\",\"state\":1}" > /www/server/panel/data/userInfo.jsonfiif [ ! -f /www/server/panel/data/panel_nps.pl ]; then echo "" > /www/server/panel/data/panel_nps.plfiif [ ! -f /www/server/panel/data/btwaf_nps.pl ]; then echo "" > /www/server/panel/data/btwaf_nps.plfiif [ ! -f /www/server/panel/data/tamper_proof_nps.pl ]; then echo "" > /www/server/panel/data/tamper_proof_nps.plfiif [ ! -f /www/server/panel/data/total_nps.pl ]; then echo "" > /www/server/panel/data/total_nps.plfi
echo "==========================================="echo "正在更新面板文件..............."sleep 1echo "更新完成!"echo "如在终端中执行此命令,请手动刷新面板页面"echo "==========================================="
chattr -i /etc/init.d/btchmod +x /etc/init.d/btecho "====================================="rm -f /dev/shm/bt_sql_tips.plkill $(ps aux|grep -E "task.pyc|main.py"|grep -v grep|awk '{print $2}')/etc/init.d/bt restartecho 'True' > /www/server/panel/data/restart.plpkill -9 gunicorn &echo "已成功升级到[$version]${Ver}";
|