sycgram/install.sh
2022-04-11 15:55:27 +08:00

196 lines
5.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
clear
CONTAINER_NAME="sycgram"
GITHUB_IMAGE_NAME="iwumingz/${CONTAINER_NAME}"
GITHUB_IMAGE_PATH="ghcr.io/${GITHUB_IMAGE_NAME}"
PROJECT_PATH="/opt/${CONTAINER_NAME}"
PROJECT_VERSION="v1.2.0"
red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
plain='\033[0m'
pre_check() {
[[ $EUID -ne 0 ]] && echo -e "${red}错误: ${plain} 需要root权限\n" && exit 1
command -v git >/dev/null 2>&1
if [[ $? != 0 ]]; then
echo -e "正在安装Git..."
apt install git -y >/dev/null 2>&1
echo -e "${green}Git${plain} 安装成功"
fi
command -v curl >/dev/null 2>&1
if [[ $? != 0 ]]; then
echo -e "正在安装curl..."
apt install curl -y >/dev/null 2>&1
echo -e "${green}curl${plain} 安装成功"
fi
command -v docker >/dev/null 2>&1
if [[ $? != 0 ]]; then
echo -e "正在安装Docker..."
bash <(curl -fsL https://get.docker.com) >/dev/null 2>&1
echo -e "${green}Docker${plain} 安装成功"
fi
command -v tar >/dev/null 2>&1
if [[ $? != 0 ]]; then
echo -e "正在安装tar..."
apt install tar -y >/dev/null 2>&1
echo -e "${green}tar${plain} 安装成功"
fi
}
delete_old_image_and_container(){
# 获取最新指令说明
# 远程file
echo -e "${red}警告!警告!警告!${plain}"
echo -e "${red}警告通过脚本更新sycgram可能会导致您的command.yml被远程配置覆盖${plain}"
echo -e "${yellow}提示如果您的command.yml相对不重要您可以直接更新${plain}"
echo -e "${yellow}建议通过sycgram指令更新${plain}"
read -p "是否继续是则请输入yes" opt
if [[ ${opt} != "yes" ]]; then
exit 0
fi
remote_file="https://raw.githubusercontent.com/iwumingz/sycgram/main/data/command.yml"
# 本地file
local_cmd_file="${PROJECT_PATH}/data/command.yml"
if [[ -f ${local_cmd_file} ]]; then
t=$(date "+%Y_%m_%d_%H_%M_%M")
mkdir -p "${PROJECT_PATH}/data/command" >/dev/null 2>&1
echo -e "${yello}正在备份${plain} >>> ${local_cmd_file}"
cp ${local_cmd_file} "${PROJECT_PATH}/data/command/command.yml.${t}"
fi
curl -fsL ${remote_file} > ${local_cmd_file}
echo -e "${yellow}正在删除旧版本容器...${plain}"
docker rm -f $(docker ps -a | grep ${CONTAINER_NAME} | awk '{print $1}')
echo -e "${yellow}正在删除旧版本镜像...${plain}"
docker image rm -f $(docker images | grep ${CONTAINER_NAME} | awk '{print $3}')
}
check_and_create_config(){
if [ ! -f ${PROJECT_PATH}/data/config.ini ]; then
mkdir -p "${PROJECT_PATH}/data" >/dev/null 2>&1
read -p "Please input your api_id" api_id
read -p "Please input your api_hash" api_hash
cat > ${PROJECT_PATH}/data/config.ini <<EOF
[pyrogram]
api_id=${api_id}
api_hash=${api_hash}
[plugins]
root=plugins
EOF
fi
}
stop_sycgram(){
res=$(docker stop $(docker ps -a | grep ${GITHUB_IMAGE_NAME} | awk '{print $1}'))
if [[ $res ]];then
echo -e "${yellow}已停止sycgram...${plain}"
else
echo -e "${red}无法停止sycgram...${plain}"
fi
}
restart_sycgram(){
res=$(docker restart $(docker ps -a | grep ${GITHUB_IMAGE_NAME} | awk '{print $1}'))
if [[ $res ]];then
echo -e "${yellow}已重启sycgram...${plain}"
else
echo -e "${red}无法重启sycgram...${plain}"
fi
}
view_docker_log(){
docker logs -f $(docker ps -a | grep ${GITHUB_IMAGE_NAME} | awk '{print $1}')
}
uninstall_sycgram(){
delete_old_image_and_container;
rm -rf ${project_path}
}
reinstall_sycgram(){
rm -rf ${PROJECT_PATH}
install_sycgram "-it"
}
install_sycgram(){
pre_check;
check_and_create_config;
delete_old_image_and_container;
echo -e "${yellow}正在拉取镜像...${plain}"
docker pull ${GITHUB_IMAGE_PATH}:latest
# 容器时区与宿主机同步,请自行修改宿主机时区
# 注意这里是docker的一些默认路径
# 如果你有过路径更改,请按需修改即可
echo -e "${yellow}正在启动容器...${plain}"
docker run $1 \
--name ${CONTAINER_NAME} \
--env TZ=$(cat /etc/timezone) \
--restart always \
--hostname ${CONTAINER_NAME} \
-v ${PROJECT_PATH}/data:/sycgram/data \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
${GITHUB_IMAGE_PATH}:latest
}
show_menu() {
echo -e "${green}Sycgram${plain} | ${green}管理脚本${plain} | ${red}${PROJECT_VERSION}${plain}"
echo -e " ${green}1.${plain} 安装"
echo -e " ${green}2.${plain} 更新"
echo -e " ${green}3.${plain} 停止"
echo -e " ${green}4.${plain} 重启"
echo -e " ${green}5.${plain} 查看日志"
echo -e " ${green}6.${plain} 重新安装"
echo -e " ${green}7.${plain} 卸载"
echo -e " ${green}0.${plain} 退出脚本"
read -ep "请输入选择 [0-7]: " option
case "${option}" in
0)
exit 0
;;
1)
install_sycgram "-it"
;;
2)
install_sycgram "-itd"
;;
3)
stop_sycgram
;;
4)
restart_sycgram
;;
5)
view_docker_log
;;
6)
reinstall_sycgram
;;
7)
uninstall_sycgram
;;
*)
echo -e "${yellow}已退出脚本...${plain}"
exit
;;
esac
}
show_menu;