Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества? Помогите нам с документацией!
0 Пользователей и 1 Гость просматривают эту тему.
#!/bin/bash############################################## WARNING! WARNING! WARNING! WARNING! #### #### DON'T USE NOTEPAD TO CHANGE THIS FILE #### INSTEAD USE SOME DECENT TEXT EDITOR. #### NEWLINE CHARACTERS DIFFER BETWEEN DOS/ #### WINDOWS AND UNIX. #### #### USING NOTEPAD TO SAVE THIS FILE WILL #### LEAVE IT IN A BROKEN STATE!!! ################################################ Writen by DrLecter #### License: GNU GPL #### Based on Tiago Tagliaferri's script #### E-mail: tiago_tagliaferri@msn.com #### From "L2J-DataPack" #### Bug reports: http://l2jdp.com/trac ##############################################trap finish 2configure() {echo "#############################################"echo "# You entered script configuration area #"echo "# No change will be performed in your DB #"echo "# I will just ask you some questions about #"echo "# your hosts and DB. #"echo "#############################################"MYSQLDUMPPATH=`which mysqldump 2>/dev/null`MYSQLPATH=`which mysql 2>/dev/null`if [ $? -ne 0 ]; thenecho "We were unable to find MySQL binaries on your path"while : do echo -ne "\nPlease enter MySQL binaries directory (no trailing slash): " read MYSQLBINPATH if [ -e "$MYSQLBINPATH" ] && [ -d "$MYSQLBINPATH" ] && [ -e "$MYSQLBINPATH/mysqldump" ] && [ -e "$MYSQLBINPATH/mysql" ]; then MYSQLDUMPPATH="$MYSQLBINPATH/mysqldump" MYSQLPATH="$MYSQLBINPATH/mysql" break else echo "The data you entered is invalid. Please verify and try again." exit 1 fi donefi#LSecho -ne "\nPlease enter MySQL Login Server hostname (default localhost): "read LSDBHOSTif [ -z "$LSDBHOST" ]; then LSDBHOST="localhost"fiecho -ne "\nPlease enter MySQL Login Server database name (default l2jdb): "read LSDBif [ -z "$LSDB" ]; then LSDB="l2jdb"fiecho -ne "\nPlease enter MySQL Login Server user (default root): "read LSUSERif [ -z "$LSUSER" ]; then LSUSER="root"fiecho -ne "\nPlease enter MySQL Login Server $LSUSER's password (won't be displayed) :"stty -echoread LSPASSstty echoecho ""if [ -z "$LSPASS" ]; then echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"elif [ "$LSUSER" == "$LSPASS" ]; then echo "You're not too brilliant choosing passwords huh?"fi#GSecho -ne "\nPlease enter MySQL Game Server hostname (default $LSDBHOST): "read GSDBHOSTif [ -z "$GSDBHOST" ]; then GSDBHOST="$LSDBHOST"fiecho -ne "\nPlease enter MySQL Game Server database name (default $LSDB): "read GSDBif [ -z "$GSDB" ]; then GSDB="$LSDB"fiecho -ne "\nPlease enter MySQL Game Server user (default $LSUSER): "read GSUSERif [ -z "$GSUSER" ]; then GSUSER="$LSUSER"fiecho -ne "\nPlease enter MySQL Game Server $GSUSER's password (won't be displayed): "stty -echoread GSPASSstty echoecho ""if [ -z "$GSPASS" ]; then echo "Hum.. I'll let it be but don't be stupid and avoid empty passwords"elif [ "$GSUSER" == "$GSPASS" ]; then echo "You're not too brilliant choosing passwords huh?"fisave_config $1}save_config() {if [ -n "$1" ]; thenCONF="$1"else CONF="database_installer.rc"fiecho ""echo "With these data I can generate a configuration file which can be read"echo "on future updates. WARNING: this file will contain clear text passwords!"echo -ne "Shall I generate config file $CONF? (Y/n):"read SAVEif [ "$SAVE" == "y" -o "$SAVE" == "Y" -o "$SAVE" == "" ];then cat <<EOF>$CONF#Configuration settings for L2J-Datapack database installer scriptMYSQLDUMPPATH=$MYSQLDUMPPATHMYSQLPATH=$MYSQLPATHLSDBHOST=$LSDBHOSTLSDB=$LSDBLSUSER=$LSUSERLSPASS=$LSPASSGSDBHOST=$GSDBHOSTGSDB=$GSDBGSUSER=$GSUSERGSPASS=$GSPASSEOFchmod 600 $CONFecho "Configuration saved as $CONF"echo "Permissions changed to 600 (rw- --- ---)"elif [ "$SAVE" != "n" -a "$SAVE" != "N" ]; then save_configfi}load_config() {if [ -n "$1" ]; thenCONF="$1"else CONF="database_installer.rc"fiif [ -e "$CONF" ] && [ -f "$CONF" ]; then. $CONFelseecho "Settings file not found: $CONF"echo "You can specify an alternate settings filename:"echo $0 config_filenameecho ""echo "If file doesn't exist it can be created"echo "If nothing is specified script will try to work with ./database_installer.rc"echo ""configure $CONFfi}asklogin(){echo "#############################################"echo "# WARNING: This section of the script CAN #"echo "# destroy your characters and accounts #"echo "# information. Read questions carefully #"echo "# before you reply. #"echo "#############################################"echo ""echo "Choose full (f) if you don't have and 'accounts' table or would"echo "prefer to erase the existing accounts information."echo "Choose skip (s) to skip loginserver DB installation and go to"echo "gameserver DB installation/upgrade."echo -ne "LOGINSERVER DB install type: (f) full, (s) skip or (q) quit? "read LOGINPROMPTcase "$LOGINPROMPT" in "f"|"F") logininstall; loginupgrade; gsbackup; asktype;; "s"|"S") gsbackup; asktype;; "q"|"Q") finish;; *) asklogin;;esac}logininstall(){echo "Deleting loginserver tables for new content."#$MYL < login_install.sql &> /dev/null$MYSQLDUMPPATH --add-drop-table -h $LSDBHOST -u $LSUSER --password=$LSPASS $LSDB --no-data | grep ^DROP | $MYL}loginupgrade(){echo "Installling new loginserver content."$MYL < ../sql/accounts.sql &> /dev/null$MYL < ../sql/gameservers.sql &> /dev/null$MYL < ../sql/account_data.sql &> /dev/null}gsbackup(){while : do echo "" echo -ne "Do you want to make a backup copy of your GSDB? (y/n): " read LSB if [ "$LSB" == "Y" -o "$LSB" == "y" ]; then echo "Making a backup of the original gameserver database." $MYSQLDUMPPATH --add-drop-table -h $GSDBHOST -u $GSUSER --password=$GSPASS $GSDB > gameserver_backup.sql if [ $? -ne 0 ];then echo "" echo "There was a problem accesing your GS database, either it wasnt created or authentication data is incorrect." exit 1 fi break elif [ "$LSB" == "n" -o "$LSB" == "N" ]; then break fi done }lsbackup(){while : do echo "" echo -ne "Do you want to make a backup copy of your LSDB? (y/n): " read LSB if [ "$LSB" == "Y" -o "$LSB" == "y" ]; then echo "Making a backup of the original loginserver database." $MYSQLDUMPPATH --add-drop-table -h $LSDBHOST -u $LSUSER --password=$LSPASS $LSDB > loginserver_backup.sql if [ $? -ne 0 ];then echo "" echo "There was a problem accesing your LS database, either it wasnt created or authentication data is incorrect." exit 1 fi break elif [ "$LSB" == "n" -o "$LSB" == "N" ]; then break fi done }asktype(){echo ""echo ""echo "WARNING: A full install (f) will destroy all existing character data."echo -ne "GAMESERVER DB install type: (f) full install, (u) upgrade, (s) skip or (q) quit? "read INSTALLTYPEcase "$INSTALLTYPE" in "f"|"F") fullinstall; upgradeinstall I; custom;; "u"|"U") upgradeinstall U; custom;; "s"|"S") custom;; "q"|"Q") finish;; *) asktype;;esac}fullinstall(){echo "Deleting all gameserver tables for new content."#$MYG < full_install.sql &> /dev/null$MYSQLDUMPPATH --add-drop-table -h $GSDBHOST -u $GSUSER --password=$GSPASS $GSDB --no-data | grep ^DROP | $MYG}upgradeinstall(){if [ "$1" == "I" ]; then echo "Installling new gameserver content."elseecho "Upgrading gameserver content"fi#if [ "$1" == "I" ]; then$MYG < ../sql/access_levels.sql &> /dev/null$MYG < ../sql/admin_command_access_rights.sql &> /dev/null#fi $MYG < ../sql/armor.sql &> /dev/null$MYG < ../sql/armorsets.sql &> /dev/null$MYG < ../sql/auction.sql &> /dev/null$MYG < ../sql/auction_bid.sql &> /dev/null$MYG < ../sql/auction_watch.sql &> /dev/null$MYG < ../sql/augmentations.sql &> /dev/null$MYG < ../sql/auto_announcements.sql &> /dev/null$MYG < ../sql/auto_chat.sql &> /dev/null$MYG < ../sql/auto_chat_text.sql &> /dev/null$MYG < ../sql/boxaccess.sql &> /dev/null$MYG < ../sql/boxes.sql &> /dev/null$MYG < ../sql/buff_templates.sql &> /dev/null$MYG < ../sql/castle.sql &> /dev/null$MYG < ../sql/castle_door.sql &> /dev/null$MYG < ../sql/castle_doorupgrade.sql &> /dev/null$MYG < ../sql/castle_manor_procure.sql &> /dev/null$MYG < ../sql/castle_manor_production.sql &> /dev/null$MYG < ../sql/castle_siege_guards.sql &> /dev/null$MYG < ../sql/char_templates.sql &> /dev/null$MYG < ../sql/character_raid_points.sql &> /dev/null$MYG < ../sql/character_friends.sql &> /dev/null$MYG < ../sql/character_hennas.sql &> /dev/null$MYG < ../sql/character_macroses.sql &> /dev/null$MYG < ../sql/character_offline_trade.sql &> /dev/null$MYG < ../sql/character_quests.sql &> /dev/null$MYG < ../sql/character_recipebook.sql &> /dev/null$MYG < ../sql/character_recommends.sql &> /dev/null$MYG < ../sql/character_shortcuts.sql &> /dev/null$MYG < ../sql/character_skills.sql &> /dev/null$MYG < ../sql/character_skills_save.sql &> /dev/null$MYG < ../sql/character_subclasses.sql &> /dev/null$MYG < ../sql/characters.sql &> /dev/null$MYG < ../sql/characters_custom_data.sql &> /dev/null$MYG < ../sql/clan_data.sql &> /dev/null$MYG < ../sql/clan_privs.sql &> /dev/null$MYG < ../sql/clan_skills.sql &> /dev/null$MYG < ../sql/clan_subpledges.sql &> /dev/null$MYG < ../sql/clan_wars.sql &> /dev/null$MYG < ../sql/clan_notices.sql &> /dev/null$MYG < ../sql/clanhall.sql &> /dev/null$MYG < ../sql/clanhall_functions.sql &> /dev/null$MYG < ../sql/class_list.sql &> /dev/null$MYG < ../sql/cursed_weapons.sql &> /dev/null$MYG < ../sql/custom_armor.sql &> /dev/null$MYG < ../sql/custom_armorsets.sql &> /dev/null$MYG < ../sql/custom_droplist.sql &> /dev/null$MYG < ../sql/custom_etcitem.sql &> /dev/null$MYG < ../sql/custom_merchant_buylists.sql &> /dev/null$MYG < ../sql/custom_merchant_shopids.sql &> /dev/null$MYG < ../sql/custom_npc.sql &> /dev/null$MYG < ../sql/custom_teleport.sql&> /dev/null$MYG < ../sql/custom_weapon.sql &> /dev/null$MYG < ../sql/custom_notspawned.sql &> /dev/null$MYG < ../sql/dimensional_rift.sql &> /dev/null$MYG < ../sql/droplist.sql &> /dev/null$MYG < ../sql/enchant_skill_trees.sql &> /dev/null$MYG < ../sql/engrave.sql &> /dev/null$MYG < ../sql/etcitem.sql &> /dev/null$MYG < ../sql/fish.sql &> /dev/null$MYG < ../sql/fishing_skill_trees.sql &> /dev/null$MYG < ../sql/forums.sql &> /dev/null$MYG < ../sql/games.sql &> /dev/null$MYG < ../sql/global_tasks.sql &> /dev/null$MYG < ../sql/helper_buff_list.sql &> /dev/null$MYG < ../sql/henna_trees.sql &> /dev/null$MYG < ../sql/heroes.sql &> /dev/null$MYG < ../sql/items.sql &> /dev/null$MYG < ../sql/itemsonground.sql &> /dev/null$MYG < ../sql/locations.sql &> /dev/null$MYG < ../sql/lvlupgain.sql &> /dev/null$MYG < ../sql/merchant_areas_list.sql &> /dev/null$MYG < ../sql/merchant_buylists.sql &> /dev/null$MYG < ../sql/merchant_lease.sql &> /dev/null$MYG < ../sql/merchant_shopids.sql &> /dev/null$MYG < ../sql/merchants.sql &> /dev/null$MYG < ../sql/minions.sql &> /dev/null$MYG < ../sql/mods_wedding.sql &> /dev/null$MYG < ../sql/mods_buffer.sql &> /dev/null$MYG < ../sql/npc.sql &> /dev/null$MYG < ../sql/npcskills.sql &> /dev/null$MYG < ../sql/olympiad_nobles.sql&> /dev/null$MYG < ../sql/pets.sql &> /dev/null$MYG < ../sql/pets_stats.sql &> /dev/null$MYG < ../sql/pkkills.sql &> /dev/null$MYG < ../sql/pledge_skill_trees.sql &> /dev/null$MYG < ../sql/posts.sql &> /dev/null$MYG < ../sql/quest_global_data.sql &> /dev/null$MYG < ../sql/raidboss_spawnlist.sql &> /dev/null$MYG < ../sql/random_spawn.sql &> /dev/null$MYG < ../sql/random_spawn_loc.sql &> /dev/null$MYG < ../sql/rebirth_manager.sql &> /dev/null$MYG < ../sql/seven_signs.sql &> /dev/null$MYG < ../sql/seven_signs_status.sql &> /dev/null$MYG < ../sql/siege_clans.sql &> /dev/null$MYG < ../sql/skill_learn.sql &> /dev/null$MYG < ../sql/skill_spellbooks.sql &> /dev/null$MYG < ../sql/skill_trees.sql &> /dev/null$MYG < ../sql/spawnlist.sql &> /dev/null$MYG < ../sql/teleport.sql &> /dev/null$MYG < ../sql/topic.sql &> /dev/null$MYG < ../sql/tvt.sql &> /dev/null$MYG < ../sql/tvt_teams.sql &> /dev/null$MYG < ../sql/weapon.sql &> /dev/null$MYG < ../sql/zone_vertices.sql &> /dev/null$MYG < ../sql/custom_contestable_clanhalls.sql &> /dev/null$MYG < ../sql/remove_unneeded_spawns.sql &> /dev/null$MYG < ../sql/seven_signs_festival.sql &> /dev/null$MYG < ../sql/grandboss_data.sql &> /dev/null$MYG < ../sql/grandboss_list.sql &> /dev/null$MYG < ../sql/fort_door.sql &> /dev/null$MYG < ../sql/fort_doorupgrade.sql &> /dev/null$MYG < ../sql/fort_siege_guards.sql &> /dev/null$MYG < ../sql/fort.sql &> /dev/null$MYG < ../sql/fortsiege_clans.sql &> /dev/null$MYG < ../sql/custom_spawnlist.sql &> /dev/null$MYG < ../sql/four_sepulchers_spawnlist.sql &> /dev/null$MYG < ../sql/vanhalter_spawnlist.sql &> /dev/null$MYG < ../sql/clanhall_siege.sql &> /dev/null$MYG < ../sql/max_poly.sql &> /dev/null$MYG < ../sql/npc_to_pc_polymorph.sql &> /dev/null$MYG < ../sql/vip.sql &> /dev/null$MYG < ../sql/ctf.sql &> /dev/null$MYG < ../sql/ctf_teams.sql &> /dev/null$MYG < ../sql/dm.sql &> /dev/nullnewbie_helper}custom(){echo ""echo ""echo -ne "Install custom gameserver DB tables: (i) custom Items, (n) custom NPCs, (s) custom NPCs Spawns, (f) full customs, (q) Quit"read ASKCScase "$ASKCS" in "i"|"I") citemsinstall;; "n"|"N") cnpcsinstall;; "s"|"S") cspawnsinstall;; "f"|"F") cstinstall;; "q"|"Q") finish;; *) custom;;esacfinish}citemsinstall(){echo "Put in database custom Items..."$MYG < ../sql/customs/added_custom_etcitem.sql &> /dev/null$MYG < ../sql/customs/DynastyArmor_SQL_OK.sql &> /dev/null$MYG < ../sql/customs/Epic_MaskAndShield_SQL_OK.sql &> /dev/null$MYG < ../sql/customs/Gold_Bar_Item_OK.sql &> /dev/null$MYG < ../sql/customs/Mordor_Weapons_SQL_OK.sql &> /dev/null$MYG < ../sql/customs/Wings_SQL_OK.sql &> /dev/nullecho "custom Items loaded with no-error. Greet!!!"custom}cnpcsinstall(){echo "Put in database custom NPCs..."$MYG < ../sql/customs/added_custom_merchant_buylist.sql &> /dev/null$MYG < ../sql/customs/added_custom_npc.sql &> /dev/null$MYG < ../sql/customs/added_custom_teleport.sql &> /dev/nullecho "custom NPCs loaded with no-error. Greet!!!"custom}cspawnsinstall(){echo "Put in database custom NPCs spawns..."$MYG < ../sql/customs/added_custom_spawnlist.sql &> /dev/nullecho "custom NPCs spawns loaded with no-error. Greet!!!"custom}cstinstall(){while : do echo "" echo -ne "If you're not that skilled applying changes within 'custom' folder, i can try to do it for you (y). If you wish to do it on your own, choose (n). Should i parse updates files? (Y/n)" read NOB if [ "$NOB" == "Y" -o "$NOB" == "y" -o "$NOB" == "" ]; then echo "" echo "There we go, it may take some time..." echo "custom parser results. Last run: "`date` >database_installer.log for file in $(ls ../sql/customs/*sql);do echo $file|cut -d/ -f4 >> database_installer.log $MYG < $file 2>> database_installer.log if [ $? -eq 0 ];then echo "no errors">> database_installer.log fi done echo "" echo "Log available at $(pwd)/database_installer.log" echo "" break elif [ "$NOB" == "n" -o "$NOB" == "N" ]; then break fi done finish}finish(){echo ""echo "Script execution finished."exit 0}newbie_helper(){while : do echo "" echo -ne "If you're not that skilled applying changes within 'updates' folder, i can try to do it for you (y). If you wish to do it on your own, choose (n). Should i parse updates files? (Y/n)" read NOB if [ "$NOB" == "Y" -o "$NOB" == "y" -o "$NOB" == "" ]; then echo "" echo "There we go, it may take some time..." echo "updates parser results. Last run: "`date` >database_installer.log for file in $(ls ../sql/updates/*sql);do echo $file|cut -d/ -f4 >> database_installer.log $MYG < $file 2>> database_installer.log if [ $? -eq 0 ];then echo "no errors">> database_installer.log fi done echo "" echo "Log available at $(pwd)/database_installer.log" echo "" break elif [ "$NOB" == "n" -o "$NOB" == "N" ]; then break fi done }clearload_config $1MYL="$MYSQLPATH -h $LSDBHOST -u $LSUSER --password=$LSPASS -D $LSDB"MYG="$MYSQLPATH -h $GSDBHOST -u $GSUSER --password=$GSPASS -D $GSDB"lsbackupasklogin
пытаюсь запустить файл .sh
Цитата: Catsys от 12 Июля 2011, 10:50:54пытаюсь запустить файл .shрасскажите как запускаете
Цитата: chilly86 от 12 Июля 2011, 11:01:42Цитата: Catsys от 12 Июля 2011, 10:50:54пытаюсь запустить файл .shрасскажите как запускаетеsh ./database_installer.sh
Там указан автор и ссылка на багрепорт.
Цитата: Catsys от 12 Июля 2011, 11:02:44Цитата: chilly86 от 12 Июля 2011, 11:01:42Цитата: Catsys от 12 Июля 2011, 10:50:54пытаюсь запустить файл .shрасскажите как запускаетеsh ./database_installer.shпробывал, таж фихняМожет все-таки надо с sudo?
trap finish 2
Скриптоведы, а за что отвечает строчкаКод: [Выделить]trap finish 2в конфиге инсталлятора?
trap [-lp] [аргумент] [сигнал ...]
Команда аргумент читается и выполняется при получении командным интерпретатором указанных сигналов. Если аргумент не указан или задан как -, для всех указанных сигналов устанавливаются исходные обработчики (те, что были при запуске командного интерпретатора). Если аргумент - пустая строка, все указанные сигналы игнорируются командным интерпретатором и вызываемыми им командами. Если указана опция -p, выдаются команды trap, связанные с каждым из перечисленных сигналов. Если аргументов нет или указана только опция -p, команда trap выдает список команд (обработчиков), связанных с каждым из сигналов. Сигнал можно задавать как по имени, определенному в файле <signal.h>, так и по номеру. Если в качестве сигнала указана конструкция EXIT (0), команда-аргумент выполняется при завершении работы командного интерпретатора. Если в качестве сигнала указано DEBUG, команда-аргумент выполняется после каждой простой команды(см. раздел "СИНТАКСИС КОМАНД" ранее)Опция -l приводит к выдаче списка имен сигналов и соответствующих им номеров.Сигналы, игнорировавшиеся при входе в командный интерпретатор, нельзя перехватить или переустановить. Перехваченные сигналы сбрасываются в исходные значения в порожденных процессах при создании. Статус возврата - 1, если указан недопустимый сигнал; в противном случае, trap возвращает 0.
Страница сгенерирована за 0.02 секунд. Запросов: 19.