update_script/main.sh

296 lines
8.9 KiB
Bash
Raw Normal View History

2023-07-21 18:52:07 +08:00
#!/bin/bash
# 定义ANSI颜色转义码
2023-07-24 14:00:29 +08:00
RED='\033[0;31m' #红色
GREEN='\033[0;32m' #绿色
YELLOW='\033[0;33m' #黄色
2023-07-21 18:52:07 +08:00
NC='\033[0m' # 恢复默认颜色
# 定义函数,用于展示菜单选项
show_menu() {
2023-07-24 14:00:29 +08:00
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}"
2023-07-21 18:52:07 +08:00
echo -e "0. ${RED}退出${NC}"
}
# 定义函数,用于处理用户输入
handle_input() {
read -p "请输入选项编号: " choice
case $choice in
1)
# 在这里编写选项一的代码
2023-07-24 14:00:29 +08:00
game
2023-07-21 18:52:07 +08:00
;;
2)
2023-07-24 14:00:29 +08:00
echo -e "${YELLOW}开始更新gm服${NC}"
2023-07-21 18:52:07 +08:00
# 在这里编写选项二的代码
2023-07-24 14:00:29 +08:00
gm
2023-07-21 18:52:07 +08:00
;;
3)
2023-07-24 14:00:29 +08:00
echo -e "${YELLOW}开始更新登陆服${NC}"
2023-07-21 18:52:07 +08:00
# 在这里编写选项三的代码
2023-07-24 14:00:29 +08:00
login
;;
4)
echo -e "${YELLOW}开始更新支付服${NC}"
# 在这里编写选项四的代码
pay
;;
5)
echo -e "${YELLOW}开始更新敏感词服${NC}"
# 在这里编写选项五的代码
mingan
2023-07-21 18:52:07 +08:00
;;
0)
echo -e "${RED}谢谢使用,再见!${NC}"
exit 0
;;
*)
echo -e "${RED}无效的选项,请重新输入${NC}"
handle_input
;;
esac
}
2023-07-24 14:00:29 +08:00
#游戏服更新
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"
2023-07-24 14:11:21 +08:00
bash update_game.sh $project $package
2023-07-24 14:00:29 +08:00
game
;;
2)
echo -e "${YELLOW}单独发送${NC}"
read -p "请输入包名(不需要带文件后缀): " package
read -p "请输入游戏服ip: " ip
echo -e "开始发送 包名:$package, ip$ip"
2023-07-24 16:04:32 +08:00
send_one_ip $package $ip
2023-07-24 14:00:29 +08:00
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}"
2023-07-24 14:06:36 +08:00
ls -l ./txt/
2023-07-24 14:00:29 +08:00
game
;;
5)
echo -e "${YELLOW}查看渠道文件名称${NC}"
2023-07-24 14:06:36 +08:00
ls -l ../project/
2023-07-24 14:00:29 +08:00
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
}
2023-07-21 18:52:07 +08:00
# 主循环,展示菜单并处理用户输入
while true; do
show_menu
handle_input
done