1. 程式人生 > >遊戲搭服自動化腳本shell

遊戲搭服自動化腳本shell

sss ani 0.11 u+ command pro yun 自動化 open

技術分享
#!/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 root@$_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/ root@$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 root@$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/ root@${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 root@$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/ root@$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 root@$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
View Code

遊戲搭服自動化腳本shell