#!/bin/bash NewVerion="" CMD_INSTALL="" CMD_UPDATE="" CMD_REMOVE="" SOFTWARE_UPDATED=0 LinuxReleaseVersion="" release="" RED="31m" ## 姨妈红 GREEN="32m" ## 水鸭青 YELLOW="33m" ## 鸭屎黄 PURPLE="35m" ## 基佬紫 BLUE="36m" ## 天依蓝 BlinkRed="31;5m" ##闪烁的红色 BackRed="41m" ## 背景红色 ######## 颜色函数方法很精妙 ############ colorEcho() { echo -e "\033[${1}${@:2}\033[0m" 1>&2 } check_root() { if [[ $EUID != 0 ]]; then colorEcho ${RED} "当前非root账号(或没有root权限),无法继续操作,请更换root账号!" colorEcho ${YELLOW} "使用sudo -命令获取临时root权限(执行后可能会提示输入root密码)" exit 1 fi } # 判断命令是否存在 command_exists() { command -v "$@" >/dev/null 2>&1 } ####### 获取系统版本及64位或32位信息 check_sys() { sys_bit=$(uname -m) case $sys_bit in i[36]86) os_bit="32" release="386" ;; x86_64) os_bit="64" release="amd64" ;; *armv6*) os_bit="arm" release="arm6" ;; *armv7*) os_bit="arm" release="arm7" ;; *aarch64* | *armv8*) os_bit="arm64" release="arm64" ;; *) colorEcho ${RED} " 哈哈……这个 辣鸡脚本 不支持你的系统。 (-_-) \n 备注: 仅支持 Ubuntu 16+ / Debian 8+ / CentOS 7+ 系统 " && exit 1 ;; esac ## 判定Linux的发行版本 if [ -f /etc/redhat-release ]; then LinuxReleaseVersion="centos" elif cat /etc/issue | grep -Eqi "debian"; then LinuxReleaseVersion="debian" elif cat /etc/issue | grep -Eqi "ubuntu"; then LinuxReleaseVersion="ubuntu" elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then LinuxReleaseVersion="centos" elif cat /proc/version | grep -Eqi "debian"; then LinuxReleaseVersion="debian" elif cat /proc/version | grep -Eqi "ubuntu"; then LinuxReleaseVersion="ubuntu" elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then LinuxReleaseVersion="centos" else LinuxReleaseVersion="" fi # 判断系统的包管理工具 apt, yum, or zypper getPackageManageTool() { if [[ -n $(command -v apt-get) ]]; then CMD_INSTALL="apt-get -y -qq install" CMD_UPDATE="apt-get -qq update" CMD_REMOVE="apt-get -y remove" elif [[ -n $(command -v yum) ]]; then CMD_INSTALL="yum -y -q install" CMD_UPDATE="yum -q makecache" CMD_REMOVE="yum -y remove" elif [[ -n $(command -v zypper) ]]; then CMD_INSTALL="zypper -y install" CMD_UPDATE="zypper ref" CMD_REMOVE="zypper -y remove" else return 1 fi return 0 } # 检查系统包管理方式,更新包 getPackageManageTool if [ $? -eq 1 ]; then colorEcho ${RED} "系统的包管理不是 APT or YUM, 请手动安装所需要的软件." return 1 fi ### 更新程序引索 if [ $SOFTWARE_UPDATED -eq 0 ]; then colorEcho ${BLUE} "正在更新软件包管理...可能花费较长时间…………" $CMD_UPDATE SOFTWARE_UPDATED=1 fi return 0 } ## 安装所需要的程序,及依赖程序 installDemandSoftwares() { for software in $@; do ## 安装该软件 if [[ -n $(command -v ${software}) ]]; then colorEcho ${GREEN} "${software}已经安装了...跳过..." echo "" else colorEcho ${BLUE} "正在安装 ${software}..." $CMD_INSTALL ${software} ## 判断该软件是否安装成功 if [ $? -ne 0 ]; then colorEcho ${RED} "安装 ${software} 失败。" colorEcho ${RED} "如果是重要软件,本脚本会自动终止!!" colorEcho ${PURPLE} "一般软件,本脚本会忽略错误并继续运行,请之后手动安装该程序。" return 1 else colorEcho ${GREEN} "已经成功安装 ${software}" colorEcho ${GREEN} "-----------------------------------------------------------" echo "" fi fi done return 0 } getNewVersion(){ VersionURL="https://api.github.com/repos/cloudreve/Cloudreve/releases/latest" NewVerion=$(curl -s "${VersionURL}" --connect-timeout 60 | grep -w 'tag_name' | cut -d '"' -f4) if [ $? -ne 0 ] || [ ${NewVerion} == "" ] then colorEcho ${RED} "从GitHub获取 Cloudreve 的最新版本失败!! " colorEcho ${RED} "大概率是由于无法访问github.com, 请检查网络!!" return 3 fi } installCloudreve(){ CloudreveFileName="cloudreve_${NewVerion}_linux_${release}.tar.gz" wget --no-check-certificate -v -N -T 10 https://github.com/cloudreve/Cloudreve/releases/download/${NewVerion}/${CloudreveFileName} if [ -s ${CloudreveFileName} ] || [ "$?" -eq "0" ] then tar -zxvf ${CloudreveFileName} chmod +x ./cloudreve if [ -d /home/cloudreve ] then mv ./cloudreve /home/cloudreve/ else mkdir -p /home/cloudreve mv ./cloudreve /home/cloudreve/ fi if [ -s /home/cloudreve/cloudreve ]; then colorEcho ${GREEN} "cloudreve-${NewVerion} 已经安装完成!!!" colorEcho ${GREEN} "安装的目录为 /home/cloudreve/" echo "" fi else echo "" colorEcho ${BlinkRed} "cloudreve安装包下载失败!!!" colorEcho ${BlinkRed} "cloudreve安装包下载失败!!!" echo "" colorEcho ${RED} "请检查网络,并重新运行此脚本!!" return 3 fi } installNginx(){ colorEcho ${BLUE} "开始通过 apt 或者 yum 的方式安装 nginx !!" installDemandSoftwares nginx systemctl enable nginx systemctl start nginx systemctl status nginx | grep -q "Active: active (running)" if [ "$?" -eq "0" ]; then colorEcho ${GREEN} "nginx 安装完成,并成功运行!!" else colorEcho ${BlinkRed} "Nginx 安装失败!!!" colorEcho ${Red} "请查看nginx安装失败的原因!!" systemctl status nginx fi } configNginx(){ nginx_pre_fix="/etc/nginx/conf.d" ServerName=$1 if [ ${ServerName} = "" ];then colorEcho ${BLUE} "您没有传递域名参数!! Cloudreve将使用ip+port的形式向外暴露!" else colorEcho ${BLUE} "开始配置Nginx反向代理的相关参数!" cat >>${nginx_pre_fix}/{ServerName} <>${systemDPath}/cloudreve.service <