|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Tools Обсуждение программ для MaNGOS |
|
Опции темы | Поиск в этой теме | Опции просмотра |
31.05.2010, 00:07 | #1 |
Гость
Сообщений: n/a
|
Bash скрипт для автоматизации процесса применения sql обновлений.
Небольшое вступление. В силу ряда жизненных обстоятельств я отошел от конвейерного выпуска патчей для ядра. Однако за проектом следить не перестал и парочку полезных вещей могу предложить.
Как известно, адекватные обладатели серверов на базе *nix никогда графическую оболочку туда не воткнут. В итоге остаются они наедине с консолью, а обновлять базы временами приходится. Эти же адекватные владельцы стараются закрыть доступ к SQL серверу извне как можно сильнее. Отсюда нерадостная картина: очень хорошо, когда этих sql обновлений 2-3 штуки, но когда их переваливает за дюжину - хочется застрелиться, применяя их из консоли. Так вот, предложенный ниже скрипт позволяет решить эту проблему. Ключевые возможности:
Код:
#!/bin/bash UPDATE_ROOT_DIR="./Updates" APPLIED_DIR="applied_"`eval date +%d_%m_%T` read -p "Username: " LOGIN [ "x$LOGIN" == "x" ] && { echo "Username can not be empty."; exit; } read -s -p "Password: " PASSWORD echo read -p "Host (default is localhost): " DB_HOST [ "x$DB_HOST" == "x" ] && { DB_HOST="localhost"; } read -p "Databases to update (separate by spaces): " DB_LIST [ "x$DB_LIST" == "x" ] && { echo "Empty list? I'm more clever than you think."; exit; } echo for DB in $DB_LIST; do CURR_DIR=$UPDATE_ROOT_DIR/$DB [ ! -d "$CURR_DIR" ] && { echo "Directory \`$CURR_DIR\` not found. I try to read files to update database \`$DB\` from it."; exit; } || { echo "Updating \`$DB\` database..."; for FILE in $CURR_DIR/*.sql; do [ -f "$FILE" ] && { echo " Applying \`$FILE\`."; mysql -u $LOGIN --password="$PASSWORD" -h $DB_HOST $DB < $FILE; [ $? -eq 1 ] && { exit; } || { [ ! -d $CURR_DIR/$APPLIED_DIR ] && { mkdir $CURR_DIR/$APPLIED_DIR; }; mv $FILE $CURR_DIR/$APPLIED_DIR; }; }; done; echo "Done!"; } done Сохраняете этот скрипт, допустим под именем update.sh. Не забываете дать ему права на выполнение (chmod +x). Далее создается в папке со скриптом папку Updates, в этой папке создаете подпапки, имена которых соответствуют именам баз данных, которые необходимо обновить (например: Updates/mangos, Updates/characters, Updates/realmd). После этого запускаете скрипт (./updates.sh). Далее показан тестовый пример, из которого всем думаю понятно, что нужно вводить. Код:
[astellar@laptop Development]$ ./update.sh Username: root Password: Host (default is localhost): Databases to update (separate by spaces): mangos characters realmd Updating `mangos` database... Applying `./Updates/mangos/540_MaNGOS_R9613_SD2_R1653_ACID_R304_RuDB_R37.4.sql`. Applying `./Updates/mangos/541_corepatch_mangos_9613_to_9651.sql`. Applying `./Updates/mangos/541_mangos_FIX_(9651).sql`. Applying `./Updates/mangos/542_corepatch_mangos_9651_to_9690.sql`. Applying `./Updates/mangos/542_mangos_FIX_(9690).sql`. Applying `./Updates/mangos/543_corepatch_mangos_9690_to_9748.sql`. Applying `./Updates/mangos/543_mangos_FIX_(9748).sql`. Applying `./Updates/mangos/544_corepatch_mangos_9748_to_9773.sql`. Applying `./Updates/mangos/544_mangos_FIX_(9773).sql`. Applying `./Updates/mangos/545_corepatch_mangos_9773_to_9799.sql`. Applying `./Updates/mangos/545_mangos_FIX_(9799).sql`. Applying `./Updates/mangos/546_corepatch_mangos_9799_to_9839.sql`. Applying `./Updates/mangos/546_mangos_FIX_(9839).sql`. Applying `./Updates/mangos/547_corepatch_mangos_9839_to_9884.sql`. Applying `./Updates/mangos/547_mangos_FIX_(9884).sql`. Applying `./Updates/mangos/548_corepatch_mangos_9884_to_9934.sql`. Applying `./Updates/mangos/548_mangos_FIX_(9934).sql`. Done! Updating `characters` database... Applying `./Updates/characters/01_characters.sql`. Done! Updating `realmd` database... Applying `./Updates/realmd/01_realmd.sql`. Done! Последний раз редактировалось Astellar; 31.05.2010 в 16:24. |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Скрипт php для отправки команды в консоль mangosd.exe | coftsonyk | Языки программирования | 51 | 11.05.2012 22:35 |
Нужен Скрипт на Азгалора WoW 2.4.3 mangos | Smoku | Корзина | 5 | 03.08.2010 17:46 |
Bash скрипт проверки сервера на зависание | deadangel | Tools | 11 | 06.06.2010 13:26 |
[Help] скрипт | _PARADOX_ | Корзина | 3 | 02.06.2010 18:29 |
Простой скрипт телепорта | Igor321 | WWW | 1 | 06.04.2010 11:55 |