update_script/main.sh

296 lines
8.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/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