Guest User

Untitled

a guest
May 22nd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.48 KB | None | 0 0
  1. #!/bin/bash
  2. ###############################################################################
  3. # configuration
  4. home="/home/mangos"
  5. mangosConf=$home"/etc/mangosd.conf"
  6. scriptConf=$home"/etc/scriptdev2.conf"
  7. mangosSource=$home"/Mangos-Sources/mangos"
  8. sd2Source=$home"/Mangos-Sources/mangos/src/bindings/scriptdev2"
  9. YTDBSource=$home"/Mangos-Sources/YTDB"
  10. #
  11. ###############################################################################
  12. # functions
  13. function db_exec()
  14. {
  15. local IFS=$' \t\n'
  16. MYCMD='mysql --host='$1' --user='$3' --password='$4' --database='$5' --batch --silent --execute '
  17. echo $($MYCMD "$6")
  18. }
  19.  
  20. function db_run()
  21. {
  22. MYCMD='mysql --host='$1' --user='$3' --password='$4' --database='$5' '
  23. echo $($MYCMD <"$6")
  24. }
  25.  
  26. function db_config_extract()
  27. {
  28. echo `cat $1|grep "^"$2 |sed 's/^.*=\t*//'|sed 's/\"//g' |sed 's/\<//'|sed 's/\>//'|sed 's/\;/ /g'`
  29. }
  30. ###############################################################################
  31. # realm
  32. searchDir=$mangosSource"/sql/updates"
  33. dtemp=$(db_config_extract $mangosConf "LoginDatabaseInfo")
  34. read realmhost realmport realmuser realmpass realmdb <<<$dtemp
  35. count=0;
  36.  
  37. while [ ! -z $realmdb ]
  38. do
  39. dblastupdate=$(db_exec $realmhost $realmport $realmuser $realmpass $realmdb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$realmdb"' AND TABLE_NAME='realmd_db_version' AND DATA_TYPE='bit'")
  40. updateFile=`grep -lir "COLUMN.$dblastupdate" $searchDir/`
  41. if [ -z $updateFile ];
  42. then
  43. break;
  44. fi
  45. _rc=$(db_run $realmhost $realmport $realmuser $realmpass $realmdb "$updateFile")
  46. echo "Installed update "$updateFile" with rc="$_rc
  47. echo
  48. count=$(($count+1));
  49. done
  50.  
  51. echo "Updating REALM DB completed. Count of updates:"$count
  52. echo "Last update REALM DB: "$dblastupdate
  53. echo
  54.  
  55. ###############################################################################
  56. # mangos
  57. searchDir=$mangosSource"/sql/updates"
  58. ytdbsearchDir=$YTDBSource"/Updates"
  59. dtemp=$(db_config_extract $mangosConf "WorldDatabaseInfo")
  60. read mangoshost mangosport mangosuser mangospass mangosdb <<<$dtemp
  61.  
  62. dbverfull=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "SELECT version FROM db_version")
  63. echo "Full version of MANGOS DB:" $dbverfull
  64. count=0;
  65.  
  66. while [ ! -z $mangosdb ]
  67. do
  68. dblastupdate=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$mangosdb"' AND TABLE_NAME='db_version_ytdb' AND DATA_TYPE='bit'")
  69. updateFile=`grep -lir "COLUMN.$dblastupdate" $ytdbsearchDir/`
  70. if [ -z $updateFile ];
  71. then
  72. break;
  73. fi
  74. _rc=$(db_run $mangoshost $mangosport $mangosuser $mangospass $mangosdb "$updateFile")
  75. echo "Installed update "$updateFile" with rc="$_rc
  76. echo
  77. count=$(($count+1));
  78. done
  79.  
  80. echo "Updating YTDB completed. Count of updates:"$count
  81. echo "Last update YTDB: "$dblastupdate
  82. echo
  83.  
  84. count=0;
  85. while [ ! -z $mangosdb ]
  86. do
  87. dblastupdate=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$mangosdb"' AND TABLE_NAME='db_version' AND DATA_TYPE='bit'")
  88. updateFile=`grep -lir "COLUMN.$dblastupdate" $searchDir/`
  89. if [ -z $updateFile ];
  90. then
  91. break;
  92. fi
  93. _rc=$(db_run $mangoshost $mangosport $mangosuser $mangospass $mangosdb "$updateFile")
  94. echo "Installed update "$updateFile" with rc="$_rc
  95. echo
  96. count=$(($count+1));
  97. done
  98.  
  99.  
  100. echo "Updating MANGOS DB completed. Count of updates:"$count
  101. echo "Last update MANGOS DB: "$dblastupdate
  102. echo
  103.  
  104. ###############################################################################
  105. # characters
  106. dtemp=$(db_config_extract $mangosConf "CharacterDatabaseInfo")
  107. read charhost charport charuser charpass chardb <<<$dtemp
  108. count=0;
  109.  
  110. while [ ! -z $chardb ]
  111. do
  112. dblastupdate=$(db_exec $charhost $charport $charuser $charpass $chardb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$chardb"' AND TABLE_NAME='character_db_version' AND DATA_TYPE='bit'")
  113. updateFile=`grep -lir "COLUMN.$dblastupdate" $searchDir/`
  114. if [ -z $updateFile ];
  115. then
  116. break;
  117. fi
  118. _rc=$(db_run $charhost $charport $charuser $charpass $chardb "$updateFile")
  119. echo "Installed update "$updateFile" with rc="$_rc
  120. echo
  121. count=$(($count+1));
  122. done
  123.  
  124. echo "Updating CHARACTERS DB completed. Count of updates:"$count
  125. echo "Last update CHARACTERS DB: "$dblastupdate
  126. echo
  127.  
  128.  
  129. ###############################################################################
  130. # scriptdev2
  131. searchDir=$sd2Source"/sql/updates"
  132.  
  133. dtemp=$(db_config_extract $scriptConf "ScriptDev2DatabaseInfo")
  134. read sdhost sdport sduser sdpass sddb <<<$dtemp
  135.  
  136. dbverfull=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "SELECT version FROM sd2_db_version")
  137. echo "Full version of SCRIPT DB:" $dbverfull
  138. count=0;
  139.  
  140. checkupdateField=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$sddb"' AND TABLE_NAME='sd2_db_version' AND COLUMN_NAME='db_version'")
  141. if [[ $checkupdateField == "" ]]; then
  142. checkUpdateField=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "ALTER TABLE sd2_db_version ADD COLUMN db_version smallint NOT NULL default 0 after version")
  143. fi
  144.  
  145. length=$((${#searchDir}+2));
  146. length1=$((${#searchDir}+6));
  147.  
  148. dblastupdate=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "SELECT db_version FROM sd2_db_version")
  149.  
  150. todb=`find $searchDir -maxdepth 1 -name "*.sql" -print |sort -n --key=$length,$length1`
  151.  
  152. for j in $todb; do
  153. num=`echo $j|sed -r "s/.*updates.*\/r//"|sed -r "s/_.*//"`
  154. if [[ $num -ge $dblastupdate ]]; then
  155. if [[ $j =~ .*_mangos_.* ]]; then
  156. _rc=$(db_run $mangoshost $mangosport $mangosuser $mangospass $mangosdb "$j")
  157. fi
  158. if [[ $j =~ .*_scriptdev2_.* ]]; then
  159. _rc=$(db_run $sdhost $sdport $sduser $sdpass $sddb "$j")
  160. fi
  161. echo "Installed update "$j
  162. count=$(($count+1));
  163. dblastupdate=$num;
  164. newlastupdate=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "UPDATE sd2_db_version SET db_version='$num'")
  165. fi
  166. done;
  167.  
  168. echo "Last update SCRIPT DB: "$dblastupdate
  169.  
  170. echo "Updating SCRIPT DB completed. Count of updates:"$count
  171. echo
  172.  
  173.  
  174. ###############################################################################
  175. # R2
  176. searchDir=$mangosSource"/sql_mr"
  177.  
  178. if [ ! -f $searchDir"/readme.txt" ]; then
  179. exit
  180. fi
  181.  
  182. checkupdateField=$(db_exec $realmhost $realmport $realmuser $realmpass $realmdb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$realmdb"' AND TABLE_NAME='realmd_db_version' AND COLUMN_NAME='r2_db_version'")
  183. if [[ $checkupdateField == "" ]]; then
  184. checkUpdateField=$(db_exec $realmhost $realmport $realmuser $realmpass $realmdb "ALTER TABLE realmd_db_version ADD COLUMN r2_db_version smallint NOT NULL default 0")
  185. fi
  186.  
  187. checkupdateField=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$mangosdb"' AND TABLE_NAME='db_version' AND COLUMN_NAME='r2_db_version'")
  188. if [[ $checkupdateField == "" ]]; then
  189. checkUpdateField=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "ALTER TABLE db_version ADD COLUMN r2_db_version smallint NOT NULL default 0")
  190. fi
  191.  
  192. checkupdateField=$(db_exec $charhost $charport $charuser $charpass $chardb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$chardb"' AND TABLE_NAME='character_db_version' AND COLUMN_NAME='r2_db_version'")
  193. if [[ $checkupdateField == "" ]]; then
  194. checkUpdateField=$(db_exec $charhost $charport $charuser $charpass $chardb "ALTER TABLE character_db_version ADD COLUMN r2_db_version smallint NOT NULL default 0")
  195. fi
  196.  
  197. length=$((${#searchDir}+3));
  198. length1=$((${#searchDir}+8));
  199.  
  200. todb=`find $searchDir -maxdepth 1 -name "*.sql" -print |grep "\/mr"|sort -n --key=$length,$length1`
  201.  
  202. for j in $todb; do
  203. _num=`echo $j|sed -r "s/.*sql_mr\/mr//"|sed -r "s/_.*//"|sed -r "s/^0*//g"`
  204.  
  205. num=$(($_num));
  206.  
  207. if [[ $j =~ .*_mangos_.* ]]; then
  208. dblastupdate=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "SELECT r2_db_version FROM db_version")
  209. if [[ $num -gt $dblastupdate ]]; then
  210. _rc=$(db_run $mangoshost $mangosport $mangosuser $mangospass $mangosdb "$j")
  211. newlastupdate=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "UPDATE db_version SET r2_db_version='$num'")
  212. dblastupdate=$num;
  213. echo "Installed update "$j
  214. fi
  215. fi
  216. if [[ $j =~ .*_characters_.* ]]; then
  217. dblastupdate=$(db_exec $charhost $charport $charuser $charpass $chardb "SELECT r2_db_version FROM character_db_version")
  218. if [[ $num -gt $dblastupdate ]]; then
  219. _rc=$(db_run $charhost $charport $charuser $charpass $chardb "$j")
  220. newlastupdate=$(db_exec $charhost $charport $charuser $charpass $chardb "UPDATE character_db_version SET r2_db_version='$num'")
  221. dblastupdate=$num;
  222. echo "Installed update "$j
  223. fi
  224. fi
  225. if [[ $j =~ .*_realmd_.* ]]; then
  226. dblastupdate=$(db_exec $realmhost $realmport $realmuser $realmpass $realmdb "SELECT r2_db_version FROM realmd_db_version")
  227. if [[ $num -gt $dblastupdate ]]; then
  228. _rc=$(db_run $realmhost $realmport $realmuser $realmpass $realmdb "$j")
  229. newlastupdate=$(db_exec $realmhost $realmport $realmuser $realmpass $realmdb "UPDATE realmd_db_version SET r2_db_version='$num'")
  230. dblastupdate=$num;
  231. echo "Installed update "$j
  232. fi
  233. fi
  234. count=$(($count+1));
  235. dblastupdate=$num;
  236. done;
  237.  
  238. if [ $count -gt 0 ]; then
  239. _rc=$(db_run $mangoshost $mangosport $mangosuser $mangospass $mangosdb $searchDir"/custom_rerun_every_mangos_DB_update.sql")
  240. fi
  241.  
  242. ###############################################################################
  243. # R2 - SD2
  244. searchDir=$sd2Source"/sql_mr"
  245.  
  246. if [ ! -f $searchDir"/readme.txt" ]; then
  247. exit;
  248. fi
  249.  
  250. checkupdateField=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='"$sddb"' AND TABLE_NAME='sd2_db_version' AND COLUMN_NAME='r2_db_version'")
  251. if [[ $checkupdateField == "" ]]; then
  252. checkUpdateField=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "ALTER TABLE sd2_db_version ADD COLUMN r2_db_version smallint NOT NULL default 0 after db_version")
  253. fi
  254.  
  255. length=$((${#searchDir}+3));
  256. length1=$((${#searchDir}+9));
  257.  
  258. todb=`find $searchDir -maxdepth 1 -name "*.sql" -print |grep "\/mr"|sort -n --key=$length,$length1`
  259.  
  260. for j in $todb; do
  261. _num=`echo $j|sed -r "s/.*sql_mr\/mr//"|sed -r "s/_.*//"|sed -r "s/^0*//g"`
  262. num=$(($_num));
  263. if [[ $j =~ .*_mangos_.* ]]; then
  264. dblastupdate=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "SELECT r2_db_version FROM db_version")
  265. if [[ $num -ge $dblastupdate ]]; then
  266. _rc=$(db_run $mangoshost $mangosport $mangosuser $mangospass $mangosdb "$j")
  267. newlastupdate=$(db_exec $mangoshost $mangosport $mangosuser $mangospass $mangosdb "UPDATE db_version SET r2_db_version='$num'")
  268. dblastupdate=$num;
  269. echo "Installed update "$j
  270. fi
  271. fi
  272. if [[ $j =~ .*_scriptdev2_.* ]]; then
  273. dblastupdate=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "SELECT r2_db_version FROM sd2_db_version")
  274. if [[ $num -ge $dblastupdate ]]; then
  275. _rc=$(db_run $charhost $sdport $sduser $sdpass $sddb "$j")
  276. newlastupdate=$(db_exec $sdhost $sdport $sduser $sdpass $sddb "UPDATE sd2_db_version SET r2_db_version='$num'")
  277. dblastupdate=$num;
  278. echo "Installed update "$j
  279. fi
  280. fi
  281. count=$(($count+1));
  282. dblastupdate=$num;
  283. done;
Add Comment
Please, Sign In to add comment