gm更新脚本修改
parent
e0f47ab17c
commit
86b2e2a439
|
|
@ -0,0 +1,131 @@
|
|||
#!/bin/bash
|
||||
|
||||
source ../main.sh
|
||||
|
||||
show_file(){
|
||||
filer=$1
|
||||
ls /data/update/$filer/ | tr ' ' '\n'
|
||||
}
|
||||
|
||||
# 判断一个字符串是否是合法的IP地址
|
||||
is_valid_ip() {
|
||||
local ip=$1
|
||||
local pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"
|
||||
|
||||
if [[ $ip =~ $pattern ]]; then
|
||||
# 检查每个数字是否在0到255之间
|
||||
local IFS='.'
|
||||
read -ra octets <<< "$ip"
|
||||
for octet in "${octets[@]}"; do
|
||||
if (( octet < 0 || octet > 255 )); then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
mod_package(){
|
||||
ip=${1}
|
||||
package=${2}
|
||||
# 源服务器上的tar压缩包路径
|
||||
source_tar="/data/update/package/"
|
||||
# 游戏服目标服务器上的目标目录路径
|
||||
destination_dir="/data/jieling/server"
|
||||
|
||||
echo "正在处理服务器 $ip"
|
||||
scp "$source_tar/$package" "$ip:$destination_dir"
|
||||
ssh "$ip" "tar -zxvf $destination_dir/$package -C $destination_dir"
|
||||
ssh "$ip" "rm -rf $destination_dir/$package"
|
||||
echo "处理完成服务器 $ip "
|
||||
}
|
||||
|
||||
#正式服发送
|
||||
send_package_reboot(){
|
||||
package=${1}.tar.gz
|
||||
ip_txt=${2}
|
||||
reboot=${3}
|
||||
if is_valid_ip "$ip_txt"; then
|
||||
echo "$ip_txt 开始测试服更新"
|
||||
mod_package $ip_txt $package
|
||||
case $reboot in
|
||||
0)
|
||||
echo "热更,不需要重启... $i"
|
||||
;;
|
||||
1)
|
||||
ssh $i "bash /data/jieling/server/bin/reboot.sh core1"
|
||||
echo "重启测试服服务器 $i"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$ip_txt 开始正式服更新"
|
||||
for i in `awk '{print $2}' /data/update/script/txt/$ip_txt`
|
||||
do
|
||||
mod_package $i $package
|
||||
case $reboot in
|
||||
0)
|
||||
echo "热更,不需要重启... $i"
|
||||
;;
|
||||
1)
|
||||
ssh $i "supervisorctl restart all"
|
||||
echo "重启正式服服务器 $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
#gm重启
|
||||
gm_reboot(){
|
||||
ip=${1}
|
||||
ssh $ip "bash /data/jieling/gm/config/script/gm_reboot.sh"
|
||||
ssh $ip "ps -ef|grep gm_tw_admin"
|
||||
echo "gm重启完毕"
|
||||
}
|
||||
|
||||
mod_gm_package(){
|
||||
ip=${1}
|
||||
# 游戏服目标服务器上的目标目录路径
|
||||
destination_dir="/data/jieling/gm"
|
||||
# 源服务器上的tar压缩包路径
|
||||
source_tar="/data/update/project/miduo_gm/gm/gm.tar.gz"
|
||||
if [ -e source_tar ]; then
|
||||
echo "正在处理服务器 $ip"
|
||||
scp "$source_tar/$package" "$ip:$destination_dir"
|
||||
ssh "$ip" "tar -zxvf $destination_dir/$package -C $destination_dir"
|
||||
ssh "$ip" "rm -rf $destination_dir/$package"
|
||||
echo "处理完成服务器 $ip "
|
||||
else
|
||||
echo "gm.tar.gz 不存在,请先去打包 "
|
||||
gm
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
gm_send_package(){
|
||||
ip_txt=${1}
|
||||
if is_valid_ip "$ip_txt"; then
|
||||
echo "$ip_txt 开始更新gm/ip"
|
||||
mod_gm_package $ip_txt
|
||||
|
||||
read -r -p "更新完毕,是否需要重启(Y/N): " input
|
||||
case $input in
|
||||
[yY][eE][sS]|[yY])
|
||||
gm_reboot $ip
|
||||
;;
|
||||
*)
|
||||
echo "over..."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$ip_txt 开始更新gm/txt"
|
||||
for i in `awk '{print $2}' /data/update/script/txt/$ip_txt`
|
||||
do
|
||||
mod_gm_package $i
|
||||
gm_reboot $i
|
||||
done
|
||||
fi
|
||||
}
|
||||
155
main.sh
155
main.sh
|
|
@ -3,6 +3,9 @@
|
|||
#删除命令乱码解决
|
||||
stty erase ^h
|
||||
|
||||
#引用其他文件
|
||||
source function/function.sh
|
||||
|
||||
# 定义ANSI颜色转义码
|
||||
#red='\033[0;31m' #红色
|
||||
#green='\033[0;32m' #绿色
|
||||
|
|
@ -31,11 +34,6 @@ show_menu() {
|
|||
echo -e "0. ${red}退出${NC}"
|
||||
}
|
||||
|
||||
show_file(){
|
||||
filer=$1
|
||||
ls /data/update/$filer/ | tr ' ' '\n'
|
||||
}
|
||||
|
||||
# 定义函数,用于处理用户输入
|
||||
handle_input() {
|
||||
read -p "请输入选项编号: " choice
|
||||
|
|
@ -75,58 +73,23 @@ handle_input() {
|
|||
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
|
||||
reboot=$3
|
||||
for i in `awk '{print $2}' /data/update/script/txt/$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 "
|
||||
|
||||
if [ ! -z $reboot ];then
|
||||
ssh "$i" "supervisorctl restart all"
|
||||
echo "重启服务器 $i "
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#游戏服更新
|
||||
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 "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 "6. ${yellow}测试服停服更新${NC}"
|
||||
echo -e "0. ${green}返回主菜单${NC}"
|
||||
echo -e "*. ${red}其他任意键退出程序${NC}"
|
||||
read -p "请输入选项编号: " choice
|
||||
case $choice in
|
||||
1)
|
||||
echo -e "${yellow}打包${NC}"
|
||||
echo -e "${yellow}打更新包${NC}"
|
||||
echo "=============================="
|
||||
show_file project
|
||||
read -p "请输入项目地址: " project
|
||||
show_file package
|
||||
|
|
@ -136,42 +99,56 @@ game(){
|
|||
game
|
||||
;;
|
||||
2)
|
||||
echo -e "${yellow}单独发送${NC}"
|
||||
echo -e "${yellow}打热更包${NC}"
|
||||
echo "=============================="
|
||||
show_file project
|
||||
read -p "请输入项目地址: " project
|
||||
show_file package
|
||||
read -p "请输入包名(不需要带文件后缀): " package
|
||||
read -p "请输入游戏服ip: " ip
|
||||
echo -e "开始发送 包名:$package, ip:$ip"
|
||||
send_one_ip $package $ip
|
||||
read -p "请输入包名(不需要带文件后缀): " package
|
||||
echo -e "开始打包 项目:$project, 包名:$package"
|
||||
bash hotfix_game.sh $project $package
|
||||
game
|
||||
;;
|
||||
3)
|
||||
echo -e "${yellow}渠道发送${NC}"
|
||||
echo -e "${yellow}正式服热更${NC}"
|
||||
echo "=============================="
|
||||
show_file package
|
||||
read -p "请输入包名(不需要带文件后缀): " package
|
||||
show_file script/txt
|
||||
read -p "请输入文件名称(不需要带文件后缀): " iptxt
|
||||
echo -e "开始发送 包名:$package, 渠道:$iptxt"
|
||||
send_many_ip $package $iptxt
|
||||
read -p "请输入文件名称(不需要带文件后缀): " channel
|
||||
echo -e "开始发送 包名:$package, channel:$channel"
|
||||
send_package_update $package ${channel}.txt 0
|
||||
game
|
||||
;;
|
||||
4)
|
||||
echo -e "${yellow}单独发送并重启${NC}"
|
||||
echo -e "${yellow}正式服停服更新${NC}"
|
||||
echo "=============================="
|
||||
show_file package
|
||||
read -p "请输入包名(不需要带文件后缀): " package
|
||||
show_file script/txt
|
||||
read -p "请输入文件名称(不需要带文件后缀): " channel
|
||||
echo -e "开始发送 包名:$package, channel:$channel"
|
||||
send_package_update $package ${channel}.txt 1
|
||||
game
|
||||
;;
|
||||
5)
|
||||
echo -e "${yellow}测试服热更${NC}"
|
||||
echo "=============================="
|
||||
show_file package
|
||||
read -p "请输入包名(不需要带文件后缀): " package
|
||||
read -p "请输入游戏服ip: " ip
|
||||
echo -e "开始发送 包名:$package, ip:$ip"
|
||||
send_one_ip $package $ip
|
||||
ssh $ip "bash /data/jieling/server/bin/reboot.sh core1"
|
||||
send_package_update $package $ip 0
|
||||
game
|
||||
;;
|
||||
5)
|
||||
echo -e "${yellow}渠道发送并重启${NC}"
|
||||
6)
|
||||
echo -e "${yellow}测试服停服更新${NC}"
|
||||
echo "=============================="
|
||||
show_file package
|
||||
read -p "请输入包名(不需要带文件后缀): " package
|
||||
show_file script/txt
|
||||
read -p "请输入文件名称(不需要带文件后缀): " iptxt
|
||||
echo -e "开始发送 包名:$package, 渠道:$iptxt"
|
||||
send_many_ip $package $iptxt
|
||||
read -p "请输入游戏服ip: " ip
|
||||
echo -e "开始发送 包名:$package, ip:$ip"
|
||||
send_package_update $package $ip 1
|
||||
game
|
||||
;;
|
||||
0)
|
||||
|
|
@ -187,30 +164,54 @@ game(){
|
|||
|
||||
#gm更新
|
||||
gm(){
|
||||
txt=gm_ip.txt
|
||||
echo -e "================================"
|
||||
echo -e "开始更新${green}gm服${NC}"
|
||||
echo -e "1. ${yellow}单渠道更新${NC}"
|
||||
echo -e "2. ${yellow}多渠道更新${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}"
|
||||
echo -e "*. ${red}其他任意键退出程序${NC}"
|
||||
read -p "请输入选项编号: " choice
|
||||
case $choice in
|
||||
1)
|
||||
echo -e "${yellow}单渠道更新${NC}"
|
||||
echo -e "${yellow}打包${NC}"
|
||||
show_file project
|
||||
read -p "请输入表所在游戏项目地址: " project
|
||||
read -p "请输入gm服ip: " ip
|
||||
echo -e "开始更新gm ip:$ip"
|
||||
bash update_gm.sh $project $ip
|
||||
bash update_gm.sh $project
|
||||
echo -e "gm打包完成"
|
||||
gm
|
||||
;;
|
||||
2)
|
||||
echo -e "${yellow}多渠道更新${NC}"
|
||||
show_file project
|
||||
|
||||
read -p "请输入项目地址: " project
|
||||
echo -e "${yellow}单机器更新${NC}"
|
||||
read -p "请输入游戏服ip: " ip
|
||||
echo -e "开始更新gm"
|
||||
bash update_gm.sh $project
|
||||
gm_send_package $ip
|
||||
gm
|
||||
;;
|
||||
3)
|
||||
echo -e "${yellow}批量更新${NC}"
|
||||
echo -e "开始更新gm"
|
||||
gm_send_package txt
|
||||
gm
|
||||
;;
|
||||
4)
|
||||
echo -e "${yellow}单机器重启${NC}"
|
||||
read -p "请输入游戏服ip: " ip
|
||||
echo -e "开始重启gm"
|
||||
gm_reboot $ip
|
||||
gm
|
||||
;;
|
||||
5)
|
||||
echo -e "${yellow}单机器更新${NC}"
|
||||
read -p "请输入游戏服ip: " ip
|
||||
echo -e "开始更新gm"
|
||||
for i in `awk '{print $2}' /data/update/script/txt/$txt`
|
||||
do
|
||||
gm_reboot $i
|
||||
done
|
||||
gm
|
||||
;;
|
||||
0)
|
||||
|
|
|
|||
48
update_gm.sh
48
update_gm.sh
|
|
@ -13,10 +13,6 @@ BASE_DIR="/data/update/project/miduo_gm"
|
|||
table=$1
|
||||
TABLE_DIR="/data/update/project/${table}"
|
||||
|
||||
#更新服务器地址,可以为空,表示更新全部gm
|
||||
ip=$2
|
||||
file=txt/gm_ip.txt
|
||||
|
||||
#excel
|
||||
cd ${TABLE_DIR}/data_excel/ || exit
|
||||
svn up
|
||||
|
|
@ -27,33 +23,21 @@ java -Dfile.encoding=UTF-8 -Djava.ext.dirs=./lib ExcelUtils
|
|||
cd ${BASE_DIR}/ || exit
|
||||
git pull
|
||||
|
||||
mvn clean package
|
||||
mvn clean
|
||||
|
||||
if [ ! -z ${ip} ];then
|
||||
update ${ip} ${TABLE_DIR} ${BASE_DIR}
|
||||
else
|
||||
for i in `awk '{print $2}' /data/update/script/$file`
|
||||
do
|
||||
update $i ${TABLE_DIR} ${BASE_DIR}
|
||||
done
|
||||
fi
|
||||
#删除旧文件
|
||||
rm -rf ${BASE_DIR}/gm/*
|
||||
#创建新目录文件
|
||||
zip_dir=${BASE_DIR}/gm/config
|
||||
mkdir -p ${zip_dir}/jsonconf
|
||||
mkdir -p ${zip_dir}/script
|
||||
#复制文件
|
||||
cp -rf ${TABLE_DIR}/miduo_server/conf/server/ItemConfig.txt ${zip_dir}/jsonconf/ItemConfig.txt
|
||||
cp -rf ${TABLE_DIR}/miduo_server/conf/server/RechargeCommodityConfig.txt ${zip_dir}/jsonconf/RechargeCommodityConfig.txt
|
||||
cp -rf ${BASE_DIR}/conf/jsonconf/Reason.txt ${zip_dir}/jsonconf/Reason.txt
|
||||
cp -rf ${BASE_DIR}/target/gm_tw_admin-1.0-SNAPSHOT.jar ${BASE_DIR}/gm/gm_tw_admin-1.0-SNAPSHOT.jar
|
||||
cp -rf ${BASE_DIR}/conf/script ${BASE_DIR}/gm/config/script
|
||||
|
||||
update(){
|
||||
ip=${1}
|
||||
TABLE_DIR=${2}
|
||||
BASE_DIR=${3}
|
||||
echo "开始更新 ${ip} "
|
||||
#表文件
|
||||
scp -r ${TABLE_DIR}/miduo_server/conf/server/ItemConfig.txt ${ip}:/data/jieling/gm/config/jsonconf/
|
||||
scp ${TABLE_DIR}/miduo_server/conf/server/RechargeCommodityConfig.txt ${ip}:/data/jieling/gm/config/jsonconf/
|
||||
scp ${BASE_DIR}/conf/jsonconf/Reason.txt ${ip}:/data/jieling/gm/config/jsonconf/
|
||||
#jar包
|
||||
scp ${BASE_DIR}/target/gm_tw_admin-1.0-SNAPSHOT.jar ${ip}:/data/jieling/gm/gm_tw_admin-1.0-SNAPSHOT.jar
|
||||
#脚本
|
||||
ssh ${ip} "mkdir -p /data/jieling/gm/config/script"
|
||||
scp -r ${BASE_DIR}/conf/script ${ip}:/data/jieling/gm/config/script
|
||||
|
||||
echo "开始重启 ${ip} 服务器 "
|
||||
ssh ${ip} "sh /data/jieling/gm/config/script/gm_reboot.sh"
|
||||
ssh ${ip} "ps -ef|grep gm_tw_admin"
|
||||
}
|
||||
#打包
|
||||
cd ${BASE_DIR}/gm || exit
|
||||
tar -czvf gm.tar.gz ./*
|
||||
|
|
|
|||
Loading…
Reference in New Issue