#!/bin/bash # 定义进度条函数 show_progress_bar() { local current=$1 local total=$2 local width=30 local percentage=$((current * 100 / total)) local filled_length=$((percentage / 10)) # 显示进度条 printf "安装进度:[" for ((i=0; i < filled_length; i++)); do printf "#" done for ((i=filled_length; i < width; i++)); do printf "." done printf "] %d%%\r" "$percentage" } ## 00 启动前准备 ##定义 ##环境变量文件 ENV_FILE="env_vars.sh" PROCESS_NAME="main" APP_DIR="/var/manyfish" ## 00 启动前准备 #文件夹是否存在 show_progress_bar 1 7 printf "基础环境准备中...\n" if [ ! -d $APP_DIR ]; then mkdir -p $APP_DIR fi cd $APP_DIR if [ ! -f "$ENV_FILE" ]; then randompath=$(head /dev/urandom | tr -dc A-Za-z | head -c 8) username=$(head /dev/urandom | tr -dc A-Za-z | head -c 9) password=$(head /dev/urandom | tr -dc A-Za-z | head -c 9) cat < "$ENV_FILE" # 自动生成的环境变量文件 export randompath="$randompath" export username="$username" export password="$password" EOL fi source "$ENV_FILE" ### echo $randompath $username $password # randompath=$(head /dev/urandom | tr -dc A-Za-z | head -c 8) # export randompath # 步骤1:检查本地的80端口是否开放 # 1. 启动安装前查看是否已经存在进程,如果存在则询问是否停止 # 替换为你的进程名称 show_progress_bar 2 7 printf "检测安装记录...\n" # 检查进程是否存在 # 检查系统上是否存在某个进程 if pgrep -x "$PROCESS_NAME" > /dev/null;then echo "检测到程序正在运行。是否停止它?[y/n].输入n会退出安装 " # 提示用户选择是否停止进程 while true; do read choice case "$choice" in y|Y ) echo "停止进程 $PROCESS_NAME..." # 使用pkill命令终止进程,如果成功则退出循环 if pkill -x "$PROCESS_NAME" > /dev/null; then echo "进程 $PROCESS_NAME 已成功停止" break else echo "无法停止进程 $PROCESS_NAME!!" fi break ;; n|N ) echo "安装程序开始退出..." sleep 2s exit break ;; * ) echo "无效的选项,请重新输入(y/n):" ;; esac done fi # if ! nc -z localhost 80; then # echo "端口80未开放,终止脚本执行。" # exit 1 # fi # 步骤2:设置一个randompath的环境变量 # 步骤3:从远程下载一个zip文件,解压,并赋予main文件的执行权限 printf "开始下载程序\n" # remote_url="http://43.130.238.91:8088/apps/manyfish.zip" remote_url="https://ipfs.filebase.io/ipfs/QmdrJoWdnGNKh9WumGEeHobjx1vTwrGmCHGBR8oqTux6KN" local_zip="$APP_DIR/$(basename "$remote_url")" main_file="main" show_progress_bar 3 7 wget -O "$local_zip" "$remote_url" printf "程序下载完成\n" show_progress_bar 4 7 printf "开始解压缩\n" unzip -o "$local_zip" -d $APP_DIR chmod +x "$main_file" # 步骤4:开始在nohup里面执行 show_progress_bar 4 7 nohup "./main" > $APP_DIR/main.log 2>&1 & # 步骤5:检查是否正常在执行 show_progress_bar 5 7 sleep 5s printf "正在启动安装程序...\n" if ! pgrep -x "main" >/dev/null; then echo "启动错误,程序未正常运行。\n" echo "以下是程序的控制台输出内容:\n" cat $APP_DIR/main.log exit 1 fi # 步骤6:获取本地的IP地址 show_progress_bar 6 7 printf "开始检测本机的公网地址...\n" sleep 1 local_ip=$(curl -s https://ipinfo.io/ip) # 步骤7:显示完成安装,打印访问地址 show_progress_bar 7 7 printf "\n" printf "\n\n-------------安装完成!(以下内容请做好记录,登陆信息仅在本窗口出现)-------------\n\n访问地址(注意打开8088,80,443端口):\n http://%s:8088/%s\n" "$local_ip" "$randompath" printf "\n\n用户名:$username ,密码:$password\n\n"