#!/bin/bash # 定义ANSI颜色转义码 RED='\033[0;31m' #红色 GREEN='\033[0;32m' #绿色 YELLOW='\033[0;33m' #黄色 NC='\033[0m' # 恢复默认颜色 # 定义函数,用于展示菜单选项 show_menu() { echo -e "================================" echo -e "欢迎使用${GREEN}戒灵更新脚本${NC}" echo -e "1. ${YELLOW}游戏服更新${NC}" echo -e "2. ${YELLOW}gm更新${NC}" echo -e "3. ${YELLOW}登陆服更新${NC}" echo -e "4. ${YELLOW}支付服更新${NC}" echo -e "5. ${YELLOW}敏感词服更新${NC}" echo -e "0. ${RED}退出${NC}" } # 定义函数,用于处理用户输入 handle_input() { read -p "请输入选项编号: " choice case $choice in 1) # 在这里编写选项一的代码 game ;; 2) echo -e "${YELLOW}开始更新gm服${NC}" # 在这里编写选项二的代码 gm ;; 3) echo -e "${YELLOW}开始更新登陆服${NC}" # 在这里编写选项三的代码 login ;; 4) echo -e "${YELLOW}开始更新支付服${NC}" # 在这里编写选项四的代码 pay ;; 5) echo -e "${YELLOW}开始更新敏感词服${NC}" # 在这里编写选项五的代码 mingan ;; 0) echo -e "${RED}谢谢使用,再见!${NC}" exit 0 ;; *) echo -e "${RED}无效的选项,请重新输入${NC}" handle_input ;; esac } #游戏服更新 game(){ echo -e "================================" echo -e "开始更新${GREEN}游戏服${NC}" echo -e "1. ${YELLOW}打包${NC}" echo -e "2. ${YELLOW}单服更新发送${NC}" echo -e "3. ${YELLOW}渠道更新发送${NC}" echo -e "4. ${YELLOW}查看所有项目名称${NC}" echo -e "5. ${YELLOW}查看渠道文件名称${NC}" echo -e "0. ${GREEN}返回主菜单${NC}" read -p "请输入选项编号: " choice case $choice in 1) echo -e "${YELLOW}打包${NC}" read -p "请输入项目地址: " project read -p "请输入包名(不需要带文件后缀): " package echo -e "开始打包 项目:$project, 包名:$package" bash update_game.sh $project $package game ;; 2) echo -e "${YELLOW}单独发送${NC}" read -p "请输入包名(不需要带文件后缀): " package read -p "请输入游戏服ip: " ip echo -e "开始发送 包名:$package, ip:$ip" send_one_ip $package $ip game ;; 3) echo -e "${YELLOW}渠道发送${NC}" read -p "请输入包名(不需要带文件后缀): " package read -p "请输入文件名称(不需要带文件后缀): " iptxt echo -e "开始发送 包名:$package, 渠道:$iptxt" send_many_ip $package $iptxt game ;; 4) echo -e "${YELLOW}查看所有项目名称${NC}" ls -l ./txt/ game ;; 5) echo -e "${YELLOW}查看渠道文件名称${NC}" ls -l ../project/ game ;; 0) show_menu handle_input ;; *) echo -e "${RED}无效的选项,请重新输入${NC}" game ;; esac } # 源服务器上的tar压缩包路径 source_tar="/data/update/package/" # 目标服务器上的目标目录路径 destination_dir="/data/" #单服发送 send_one_ip(){ package=${1}.tar.gz ip=${2} # 单服务器更新 echo "正在处理服务器 $ip " scp "$source_tar/$package" "$ip:$destination_dir" ssh "$ip" "tar -zxvf $destination_dir/$package -C $destination_dir/jieling/server/" ssh "$ip" "rm -rf $destination_dir/$package" echo "处理完成服务器 $ip " } #多服发送 send_many_ip(){ package=${1}.tar.gz iptxt=${2}.txt for i in `awk '{print $2}' /data/update/script/$iptxt` do echo "正在处理服务器 $i " scp "$source_tar/$package" "$i:$destination_dir" ssh "$i" "tar -zxvf $destination_dir/$package -C $destination_dir/jieling/server/" ssh "$i" "rm -rf $destination_dir/$package" echo "处理完成服务器 $i " done } #gm更新 gm(){ echo -e "================================" echo -e "开始更新${GREEN}gm服${NC}" echo -e "1. ${YELLOW}单渠道更新${NC}" echo -e "2. ${YELLOW}多渠道更新${NC}" echo -e "3. ${YELLOW}查看所有渠道${NC}" echo -e "0. ${GREEN}返回主菜单${NC}" read -p "请输入选项编号: " choice case $choice in 1) echo -e "${YELLOW}单渠道更新${NC}" read -p "请输入项目地址: " project read -p "请输入gm服ip: " ip echo -e "开始更新gm ip:$ip" bash update_gm.sh $project $ip gm ;; 2) echo -e "${YELLOW}多渠道更新${NC}" read -p "请输入项目地址: " project echo -e "开始更新gm" bash update_gm.sh $project gm ;; 3) echo -e "${YELLOW}查看所有项目名称${NC}" cat txt/gm_ip.txt gm ;; 0) show_menu handle_input ;; *) echo -e "${RED}无效的选项,请重新输入${NC}" gm ;; esac } #登陆 ssh $i "sh /data/jieling/gm/gm_restart.sh" login(){ echo -e "================================" echo -e "开始更新${GREEN}登陆服${NC}" echo -e "1. ${YELLOW}更新登陆服代码${NC}" echo -e "2. ${YELLOW}重启登陆服${NC}" echo -e "0. ${GREEN}返回主菜单${NC}" read -p "请输入选项编号: " choice case $choice in 1) echo -e "${YELLOW}登陆服更新${NC}" read -p "请输入登陆服ip: " ip echo -e "开始更新登陆服 ip:$ip" bash update_login.sh $ip login ;; 2) echo -e "${YELLOW}登陆服重启${NC}" read -p "请输入登陆服ip: " ip echo -e "开始重启登陆服 ip:$ip" ssh $ip "bash /usr/local/apache-tomcat-7.0.79/bin/shutdown.sh" sleep 3 ssh $ip "bash /usr/local/apache-tomcat-7.0.79/bin/startup.sh" login ;; 0) show_menu handle_input ;; *) echo -e "${RED}无效的选项,请重新输入${NC}" login ;; esac } #支付 pay(){ echo -e "================================" echo -e "开始更新${GREEN}支付服${NC}" echo -e "1. ${YELLOW}更新支付服代码${NC}" echo -e "1. ${YELLOW}重启支付服${NC}" echo -e "0. ${GREEN}返回主菜单${NC}" read -p "请输入选项编号: " choice case $choice in 1) echo -e "${YELLOW}支付服更新${NC}" read -p "请输入支付服ip: " ip echo -e "开始更新支付服 ip:$ip" bash update_delivery.sh $ip pay ;; 2) echo -e "${YELLOW}支付服重启${NC}" read -p "请输入支付服ip: " ip echo -e "开始重启支付服 ip:$ip" ssh $ip "bash /data/jieling/delivery-server/pay_restart.sh" login ;; 0) show_menu handle_input ;; *) echo -e "${RED}无效的选项,请重新输入${NC}" pay ;; esac } #敏感词 mingan(){ echo -e "================================" echo -e "开始更新${GREEN}敏感词服${NC}" echo -e "1. ${YELLOW}更新敏感词服代码${NC}" echo -e "2. ${YELLOW}重启敏感词服${NC}" echo -e "0. ${GREEN}返回主菜单${NC}" read -p "请输入选项编号: " choice case $choice in 1) echo -e "${YELLOW}敏感词服更新${NC}" read -p "请输入敏感词服ip: " ip echo -e "开始更新敏感词服 ip:$ip" bash update_sensitive.sh $ip mingan ;; 2) echo -e "${YELLOW}敏感词服重启${NC}" read -p "请输入敏感词服ip: " ip echo -e "开始重启敏感词服 ip:$ip" ssh $ip "bash /data/jieling/sensitiveWordFilter/bin/mingan_reboot.sh" login ;; 0) show_menu handle_input ;; *) echo -e "${RED}无效的选项,请重新输入${NC}" mingan ;; esac } # 主循环,展示菜单并处理用户输入 while true; do show_menu handle_input done