游戏搭服自动化脚本shell

#!/bin/bash
#10.117.1.199  120.26.198.243  9006;g=6006c=7006  10.168.187.39:8881  10.168.187.39:8882  10.168.187.39:8883  178pop_s10  rm-bp1gy2r82o607w4v8.mysql.rds.aliyuncs.com
#    1              2              3                  4                   5                          6            7                             8

basedir=/data/jzadmin
scripts=$basedir/scripts
rootgamedir=$basedir/game
sourcegame=${PWD}/game
sourcecross=${PWD}/game/Source_cross
sourceworld=${PWD}/game/Source_world
gamelist=${PWD}/create_game_list.txt
tmpdir=${PWD}/tmp
ansiblehost=/etc/ansible/hosts
checklist=$scripts/bak/beifen.txt
checklist2=$scripts/bak/Cross.txt
[ -d $tmpdir ] || mkdir -p $tmp &> /dev/null

createmenu(){
echo -e "\033[32;1m<<=====SUBMENU=====>>\033[35;0m
\033[32;1m1\033[32;0m) CreateGame
\033[32;1m2\033[32;0m) CreateCross
\033[32;1m3\033[32;0m) CreateWorld
\033[32;1m4\033[32;0m) EXIT"
}

login(){
exec_cmd=$1
expect << EOF
                        set timeout -1
                            log_user 0
                        spawn $exec_cmd
                            sleep 1
                        expect "*(yes/no)?" {
                                 send "yes\r"
                        exp_continue
                              } "password:" {
                        send "JGyou(20170206)$\r"
                        }
                        expect "*total size*"
                        expect eof
EOF
}

login2()
{
_host_ip="$1"
_host_cmd="$2"
tag=$3
expect << EOF
                     set timeout -1
                     log_user $tag
                     spawn ssh [email protected]$_host_ip "$_host_cmd"
                     expect "*(yes/no)?" {
                            send "yes\r"
                            exp_continue
                      } "password:" {
                     send "JGyou(20170206)$\r"
                     }
                    expect eof
EOF
}

select a in "CreateGame" "CreateCross" "CreateWorld"  "EXIT"
do
        echo "select create:"
        case $a in
            CreateGame)
                           for uid in `awk ‘{print $7}‘ $gamelist`
                           do
                platform=`echo $uid|cut -d_ -f1`
                                daqushu=`echo $uid|cut -d_ -f2  |cut -d"s" -f2`
                gamedirSource=${platform}cq_lycqly_source
                                dbip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $8}‘ $gamelist`
                array=($(awk ‘/\<‘‘‘$uid‘‘‘\>/{print}‘ $gamelist))
                cwlan_ip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $1}‘ $gamelist`
                cwwan_ip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $2}‘ $gamelist`
                gport=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d"=" -f2|cut -b 1-4`
                cport=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d";" -f1`
                for i in {3..5}
                do
                  daqushuN=$(($daqushu+i-3))
                  gamedir=${platform}cq_lycqly_s${daqushuN}
                  sid=${platform}_s${daqushuN}
                  dbname=${platform}cq_s$daqushu
                  lanip=`echo ${array[i]}|cut -d: -f1`
                  gameip=`awk ‘/\<‘‘‘$lanip‘‘‘\>/{print $1}‘ ${ansiblehost}`
                  waiip=`ansible $gameip -m command -a ‘ip addr‘|grep eth1| sed -n "2,1p" | awk ‘{print $2}‘ | cut -d"/" -f1`
                  port=`echo ${array[i]}|cut -d: -f2`
                  echo -e ">>> $gamedir creating..\c"
                  [ $? -ne 0 ] && echo "copy center_db.cfg to source game failed and exit." && exit 109
                  exec_cmd="rsync -aP --delete  --exclude=lord.cfg  $sourcegame/$platform/$gamedirSource/ [email protected]$lanip:$rootgamedir/$gamedir"
                  login "$exec_cmd"
                  cp -af $sourcegame/$platform/$gamedirSource/lord.cfg $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[lord\]/,/\[Paysys\]/ s/Port=[0-9]\{4\}/Port=$port/" $tmpdir/lord_${gamedir}.cfg
                  sed -i "s/PID_SID=\(.*\)/PID_SID=$sid/" $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[DBSecure\]/,/\[SCC\]/ s/HostName=rm-.*com$/HostName=$dbip/" $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[DBSecure\]/,/\[SCC\]/ s/DBName=\(.*\)/DBName=$dbname/" $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[WorldServer\]/,/\[CrossServer\]/ s/HostName=[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HostName=$cwlan_ip/"                   $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[WorldServer\]/,/\[CrossServer\]/ s/Port=[0-9]\{4\}/Port=$gport/" $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[CrossServer\]/,+3 s/InternetIp=[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/InternetIp=$cwwan_ip/" $tmpdir/lord_${gamedir}.cfg
                  sed -i "/\[CrossServer\]/,+3 s/Port=[0-9]\{4\}/Port=$cport/" $tmpdir/lord_${gamedir}.cfg
                  exec_cmd="rsync -aP --delete $tmpdir/lord_${gamedir}.cfg [email protected]$lanip:$rootgamedir/$gamedir/lord.cfg"
                  login "$exec_cmd"
                  [ $? -eq 0 ] && echo -e "\r>>> $gamedir created \e[01;32m [ ok ]\e[0m" || exit 2
                  echo "$lanip   $waiip   $port   $gamedir   lord_${platform}_s$daqushuN   ${platform}_s$daqushuN   $dbname   $dbip" >> ${PWD}/gamecontral.txt
#                  gamecontral=($lanip $waiip $port $gamedir lord_${platform}_s$daqushuN ${platform}_s$daqushuN $dbname $dbip)
#                  echo ${gamecontral[*]} >> ${PWD}/gamecontral.txt
                    done
                            done
            createmenu
            ;;
        CreateCross)
            for uid in `awk ‘{print $7}‘ $gamelist`
                        do
                             platform=`echo $uid|cut -d_ -f1`
                             daqushu=`echo $uid|cut -d_ -f2  |cut -d"s" -f2`
                 crossdir=${platform}cq_croserver_s$daqushu
                             crossdirSource=${platform}cq_croserver_source
                             dbip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $8}‘ $gamelist`
                             cwlan_ip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $1}‘ $gamelist`
                             cwwan_ip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $2}‘ $gamelist`
                             gport=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d"=" -f2|cut -b 1-4`
                             cport=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d";" -f1`
                 c2port=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d"=" -f3`
                             echo -e ">>> Cross $crossdir creating..\c"
                             exec_cmd="rsync -aP --delete  --exclude=lord.cfg $sourcegame/$platform/$crossdirSource/ [email protected]${cwlan_ip}:$rootgamedir/$crossdir"
                             login "$exec_cmd"
                             cp -af $sourcegame/$platform/$crossdirSource/lord.cfg $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[Paysys\]/,/\[DBSecure\]/ s/PID_SID=\(.*\)/PID_SID=$dbname/" $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[lord\]/,/\[Paysys\]/ s/Port=[0-9]\{4\}/Port=$cport/" $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[DBSecure\]/,/\[SCC\]/ s/HostName=rm-.*com$/HostName=$dbip/"                              $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[DBSecure\]/,/\[SCC\]/ s/DBName=\(.*\)/DBName=$dbname/" $tmpdir/lord_${crossdir}.cfg
                             #World cross config
                             sed -i "/\[WorldServer\]/,/\[CrossServer\]/ s/HostName=[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/HostName=$cwlan_ip/"                             $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[WorldServer\]/,/\[CrossServer\]/ s/Port=[0-9]\{4\}/Port=$c2port/" $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[CrossServer\]/,+3 s/InternetIp=[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/InternetIp=$cwwan_ip/"                              $tmpdir/lord_${crossdir}.cfg
                             sed -i "/\[CrossServer\]/,+3 s/Port=[0-9]\{4\}/Port=$cport/" $tmpdir/lord_${crossdir}.cfg
                             exec_cmd="rsync -aP --delete $tmpdir/lord_${crossdir}.cfg [email protected]$cwlan_ip:$rootgamedir/$crossdir/lord.cfg"
                             login "$exec_cmd"
                             [ $? -eq 0 ] && echo -e "\r>>> Cross $dbname created \e[01;32m [ ok ]\e[0m" || exit 2
                 echo "$cwlan_ip   $cwwan_ip   $cport   $crossdir   lord_${platform}cros_s$daqushu   ${platform}cros_s$daqushu   ${platform}cq_s$daqushu   127.0.0.1" >> ${PWD}/gamecontral.txt
#                 crosscontral=($cwlan_ip $cwwan_ip $cport $crossdir lord_${platform}cros_s$daqushu ${platform}cros_s$daqushu ${platform}cq_s$daqushu 127.0.0.1)
#                 echo ${crosscontral[*]} >> ${PWD}/gamecontral.txt
                        done
            createmenu
            ;;
        CreateWorld)
                for uid in `awk ‘{print $7}‘ $gamelist`
                        do
               platform=`echo $uid|cut -d_ -f1`
                           daqushu=`echo $uid|cut -d_ -f2  |cut -d"s" -f2`
                           worlddir=${platform}cq_worldserver_s$daqushu
                           worlddirSource=${platform}cq_worldserver_source
               cwlan_ip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $1}‘ $gamelist`
                           cwwan_ip=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $2}‘ $gamelist`
                           gport=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d"=" -f2|cut -b 1-4`
                           c2port=`awk ‘/\<‘‘‘$uid‘‘‘\>/{print $3}‘ $gamelist|cut -d"=" -f3`
#               port3="g=${gprot}c=${c2port}"
                           echo -e ">>> World $destdir creating..\c"
                           exec_cmd="rsync -aP --delete   $sourcegame/$platform/$worlddirSource/ [email protected]$cwlan_ip:$rootgamedir/$worlddir"
                           login "$exec_cmd"
                           cp -af $sourcegame/$platform/$worlddirSource/Config/WorldServer.Cfg $tmpdir/WorldServer_${worlddir}.cfg
                           sed -i "s/Ip=[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/Ip=$cwlan_ip/" $tmpdir/WorldServer_${worlddir}.cfg
                           sed -i "s/LogicServerPort=[0-9]\{4\}/LogicServerPort=$gport/" $tmpdir/WorldServer_${worlddir}.cfg
                           sed -i "s/CrossServerPort=[0-9]\{4\}/CrossServerPort=$c2port/" $tmpdir/WorldServer_${worlddir}.cfg
                           exec_cmd="rsync -aP --delete $tmpdir/WorldServer_${worlddir}.cfg [email protected]$cwlan_ip:$rootgamedir/$worlddir/Config/WorldServer.Cfg"
                           login "$exec_cmd"
                           [ $? -eq 0 ] && echo -e "\r>>> World $dbname created\e[01;32m [ ok ]\e[0m" || exit 2
#               worldcontral=($cwlan_ip $cwwan_ip g=${gport}c=${c2port} $worlddir lord_${platform}world_s$daqushu ${platform}world_s$daqushu ${platform}cq_s$daqushu 127.0.0.1)
#               echo ${worldcontral[*]} >> ${PWD}/gamecontral.txt
               echo "$cwlan_ip   $cwwan_ip   g=${gport}c=${c2port}   $worlddir   lord_${platform}world_s$daqushu   ${platform}world_s$daqushu   ${platform}cq_s$daqushu   127.0.0.1" >> ${PWD}/gamecontral.txt

            done
            createmenu
            ;;
        EXIT)
                echo "EXIT"
                exit 0
            ;;
            *)
                echo "\033[31;1mError\033[31;0m"
                createmenu
            ;;
        esac
done

时间: 2024-11-06 16:02:54

游戏搭服自动化脚本shell的相关文章

linux学习笔记之shell(二)——自动化脚本

本文参考:shell脚本学习指南 本文阅读前提为:知道shell指令,但不知道如何完成一个自动化的shell脚本. 因为编辑本文时,作者也是一个新手.所以,在一些理论上,可能存在错误.如果存在错误,希望指出(可发送email:[email protected]). 此文会定时更新.直到有一个相对完善的版本. 一:如何让系统识别,以及一些前期细节. 1,系统如何识别:当系统执行一个可执行文件时,发现不是可执行格式.内核会收到一个错误消息:此文件不是可执行文件.此时,会尝试调用调用解释器. 2,如何

游戏跨服架构进化之路

江贵龙,游戏行业从业8年,历任多款游戏项目server主程.server负责人. 关注游戏server架构及优化,监控预警,智能运维,数据统计分析等. 1.背景 尽管游戏市场竞争激烈,产品行局变动较大,但游戏产业一直处于稳步增长阶段,不管是在端游.页游.手游还是已经初露端倪的H5游戏. 能够预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水.市场上也仍然在不断涌现精品.研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果.更成熟的

Linux 多网卡Bond自动化脚本

现状: 目前一台物理机4个网卡,em1-em2-em3-em4,需要实现1.2网卡绑定,3.4网卡绑定,模式为主备.即:一个网卡处于活动状态 ,一个处于备份状态,所有流量都在主链路上处理.当活动网卡down掉时,启用备份的网卡 附:linux有七种网卡绑定模式:0. round robin,1.active-backup,2.load balancing (xor),  3.fault-tolerance (broadcast), 4.lacp,  5.transmit load balanci

Resurrectio-capserjs的自动化脚本录制工具

[根据github上的文档说明整理] Phantom下的任何操作都可以录制 Resurrectio是一个Chrome插件,他可以记录浏览器的操作,并转化成对应的casperjs脚本 Resurrectio使用最简和装饰性的选择器,所以记录的步骤能在布局和设计变化时保持有效 当CasperJS执行JavaScript,录制步骤不限于html交互,js执行的精确步骤也能够被完整记录 Resurrectio也提供了一个方法去生成截屏,在你的测试场景里,并且能够导出注视和截屏在重构后的方法里(意思是这个

最新dedecms网页游戏开服表发号网站源码模板

模板介绍 最新dedecms网页游戏开服表发号网站源码模板,让你更精确的把握游戏开服时间和战略技巧. 这套网页游戏模板是织梦二次开发后的一套网页源码,后台也是经过二次开发后,适合游戏网站的一些参数说明及添加信息. 模板文件: 404.htm            大气的404页面 article_fahao.htm  发号模板详细页 article_time.htm   发号时间详细页 footer_time.htm    发号时间底部模板 head_time.htm      发号时间头部模板

Selenium+C#自动化脚本开发学习

Selenium+C#自动化脚本开发知识学习 1:Selenium中对浏览器的操作 首先生成一个Web对象 IWebDriver driver = new FirefoxDriver(); //打开指定的URL地址 driver.Navigate().GoToUrl(@"http://12.99.102.196:9080/corporbank/logon_pro.html"); //关闭浏览器 Driver.quit(); 网银浏览器兼容性测试过程中,关闭浏览器后会有对话框,此问题解决

我的第一个自动化脚本(python)----百度搜索

这是一个纯小白胡说八道的个人总结,如果有人看到什么不对的,欢迎批评指正 博客园开通了很久,一直不知道该怎么去写,总觉得自己要写的东西都是别人已经写过的,我再去写就是在重复之前人所说,今天去面试和面试姐姐聊到这个问题的时候,我才真正的意识到写博客的意义,其实博客只要是写出来对自己有帮助,管其他人怎么看呢,就算百度搜索出来好多一样的那又怎么样呢,博客是写给自己的,如果能因此帮助别人少走一些弯路又何乐而不为呢 接下来就来我实现这个自动化脚本经历的过程,首先要在火狐浏览器安装selenium IDE:其

关于自动化脚本黑盒话的进度

在很久之前就想将自动化脚本编程黑盒化,让黑盒来编制自动化case 这样,我就可以有更多时间去面对以及完善我的自动化测试框架,毕竟总是在一个地方徘徊,终难有出路. 今天excel终于搞定了 ,未来关联方法的参数,在庆祝抗战70周年时,我还在努力ing... 好了,废话不多少,给大家看看我的关联函数吧, =IF(COUNTIF(基础数据!$A$2:$A$40,$G2)>0,VLOOKUP($G2,基础数据!$A$2:$D$39,2,FALSE),IF(COUNTIF(基础数据!$E$2:$E$40,

【转】jenkins上配置robotframeworkride自动化脚本任务

jenkins上配置robotframeworkride自动化脚本任务 编写好的自动化脚本,集成在jenkins上进行自动运行于监控,这里采用分布式构建,在一台slave上进行任务构建与自动化脚本的运行. 步骤: 1.创建jenkins任务 选择创建一个自由风格的任务 2.选择执行自动化脚本的slave机.(slave节点的配置参考) 图1 图2 etl-Suite.txt是自动化脚本 图3 Hi All, </br> <font color="#0B610B" si