Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
brnopcman

[SOLVED][BASH]Problem s Trinity Core init.d script

Recommended Posts

Zdravim rozhodl jsem se udělat init.d script pro Trinity Core. Link zde. Ale bohužel mi nefunguje sedím nad tim už 3 hodiny a ne a ne najit chybu tak jestli bych vas mohl požadat o kousek vašeho času... Předem děkuji.

Po spuštění to vypisuje:

/etc/init.d/wow: line 305: unexpected EOF while looking for matching `"'
/etc/init.d/wow: line 311: syntax error: unexpected end of file

Zdrojový kod wow

 


#!/bin/bash
# /etc/init.d/wow
### BEGIN INIT INFO
# Provides:   wow
# Required-Start: $local_fs $remote_fs
# Required-Stop:  $local_fs $remote_fs
# Should-Start:   $network
# Should-Stop:	$network
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:	World of Warcraft server
# Description:	Init script for World of Warcraft server, with rolling logs.
### END INIT INFO
# Created by Floriusin
# Based on https://github.com/Ahtenus/minecraft-init

# Loads config file
if [ -L $0 ]
then
source `readlink -e $0 | sed "s:[^/]*$:config:"`
else
source `echo $0 | sed "s:[^/]*$:config:"`
fi
if [ "$SALT" == "" ]
then
echo "Couldn't load config file, please edit config.example and rename it to config"
logger -t wow-init-config "Couldn't load config file, please edit config.example and rename it to config"
exit
fi

ME=`whoami`
as_user() {
if [ $ME == $USERNAME ] ; then
 bash -c "$1"
else
 su $USERNAME -s /bin/bash -c "$1"
fi
}
is_running_worldserver(){
# Checks for the world server screen session
# returns true if it exists.
if ps ax | grep -v grep | grep "$WORLDSCREEN $WORLDINVOCATION" > /dev/null
then
 return 0
fi
return 1
}
is_running_authserver(){
# Checks for the auth server screen session
# returns true if it exists.
if ps ax | grep -v grep | grep "$AUTHSCREEN $AUTHINVOCATION" > /dev/null
then
 return 0
fi
return 1
}
datepath() {
# datepath path filending-to-check returned-filending
# Returns an file path with added date between the filename and file ending.
# $1 filepath (not including file ending)
# $2 file ending to check for uniqueness
# $3 file ending to return
if [ -e $1`date +%F`$2 ]
then
 echo $1`date +%FT%T`$3
else
 echo $1`date +%F`$3
fi
}
world_start() {
cd $WOWPATH
as_user "cd $WOWPATH && screen -dmS $WORLDSCREEN $WORLDINVOCATION"
#
# Waiting for the server to start
#
seconds=5
until ps ax | grep -v grep | grep "$WORLDSCREEN $WORLDINVOCATION" > /dev/null
do
 sleep 1
 seconds=$seconds+1
 if [[ $seconds -eq 5 ]]
 then
  echo "Still not running, waiting a while longer..."
 fi
 if [[ $seconds -ge 120 ]]
 then
  echo "Worldserver Failed to start, aborting.	\033[0;31m[ FAIL ]"
  exit 1
 fi
done
echo "Worldserver is running.				 \033[0;32m[  OK  ]"
}
auth_start() {
cd $WOWPATH
as_user "cd $WOWPATH && screen -dmS $AUTHSCREEN $AUTHINVOCATION"
#
# Waiting for the server to start
#
seconds=5
until ps ax | grep -v grep | grep "$AUTHSCREEN $AUTHINVOCATION" > /dev/null
do
 sleep 1
 seconds=$seconds+1
 if [[ $seconds -eq 5 ]]
 then
  echo "Still not running, waiting a while longer..."
 fi
 if [[ $seconds -ge 120 ]]
 then
  echo "Authserver failed to start, aborting.	 \033[0;31m[ FAIL ]"
  exit 1
 fi
done
echo "Authserver is running.				 \033[0;32m[  OK  ]"
}
auth_stop() {
as_user "screen -p 0 -S $AUTHSCREEN -X eval 'stuff \"^C\"\015'""
sleep 0.5
#
# Waiting for the server to shut down
#
seconds=0
while ps ax | grep -v grep | grep "$AUTHSCREEN $AUTHINVOCATION" > /dev/null
do
 sleep 1
 seconds=$seconds+1
 if [[ $seconds -eq 5 ]]
 then
  echo "Still not shut down, waiting a while longer..."
 fi
 if [[ $seconds -ge 120 ]]
 then
  logger -t wow-init-auth "Failed to shut down server, aborting."
  echo "Authserver failed to start, aborting.	 \033[0;31m[ FAIL ]"
  exit 1
 fi
done
echo "Authserver is now shut down.   \033[0;32m[  OK  ]"
}
world_stop() {
as_user "screen -p 0 -S $WORLDSCREEN -X eval 'stuff \"^C\"\015'""
sleep 0.5
#
# Waiting for the server to shut down
#
seconds=0
while ps ax | grep -v grep | grep "$WORLDSCREEN $WORLDINVOCATION" > /dev/null
do
 sleep 1
 seconds=$seconds+1
 if [[ $seconds -eq 5 ]]
 then
  echo "Still not shut down, waiting a while longer..."
 fi
 if [[ $seconds -ge 120 ]]
 then
  logger -t wow-init-world "Failed to shut down server, aborting."
  echo "Worldserver failed to start, aborting.	\033[0;31m[ FAIL ]"
  exit 1
 fi
done
echo "Worldserver is now shut down.  \033[0;32m[  OK  ]"
}
log_roll() {
	if [ ! -d $OLDLOGPATH ]; then
			as_user "mkdir -p $LOGPATH"
	fi
	path=`datepath $OLDLOGPATH/server_ .log.gz .log`
	as_user "cp $LOGPATH/*.* $path && gzip $path"
# only if previous command was successful
	if [ $? -eq 0 ]; then
			# turnacate the existing log without restarting server
			as_user "cp /dev/null $LOGPATH/$AUTHLOGFILE"
			as_user "cp /dev/null $LOGPATH/$AUTHSQLDRIVERLOGFILE"
			as_user "cp /dev/null $LOGPATH/$SERVERLOGFILE"			  
			as_user "cp /dev/null $LOGPATH/$WORLDLOGFILE"
			as_user "cp /dev/null $LOGPATH/$DBERRORLOGFILE"
			as_user "cp /dev/null $LOGPATH/$CHARLOGFILE"
			as_user "cp /dev/null $LOGPATH/$GMLOGFILE"
			as_user "cp /dev/null $LOGPATH/$RALOGFILE"
			as_user "cp /dev/null $LOGPATH/$ARENALOGFILE"
			as_user "cp /dev/null $LOGPATH/$SQLDEVELOPERLOFFILE"
			as_user "cp /dev/null $LOGPATH/$SQLDRIVERLOGFILE"
			as_user "cp /dev/null $LOGPATH/$CHATLOGFILE"
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$AUTHLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$AUTHSQLDRIVERLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$SERVERLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$WORLDLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$DBERRORLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$CHARLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$GMLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$RALOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$ARENALOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$SQLDEVELOPERLOFFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$SQLDRIVERLOGFILE "
			as_user "echo \"Previous logs rolled to $path\" > $LOGPATH/$CHATLOGFILE "
			echo "Logs are roled.				\033[0;32m[  OK  ]"			
	else  
			echo "Failed to rotate logs to $OLDLOGPATH/server_$path.log.gz	\033[0;31m[ FAIL ]"
	fi
}
case "$1" in
start)
 # Starts the server
if is_running_authserver; then
  echo "Authserver already running.			  \033[0;31m[ FAIL ]"
 else
  auth_start
 fi
 if is_running_worldserver; then
  echo "Worldserver already running.			 \033[0;31m[ FAIL ]"
 else
  world_start
 fi
 ;;
stop)
 # Stops the server
 if is_running_auth; then
  as_user "screen -p 0 -S $WORLDSCREEN -X eval 'stuff \"announce SERVER IS GOING TO SHUT DOWN\"\015'""
  auth_stop
 else
  echo "Auth server is not running.			  \033[0;31m[ FAIL ]"
 fi  
 if is_running_world; then
  world_stop
 else
  echo "World server is not running.			 \033[0;31m[ FAIL ]"
 fi
 ;;
restart)
 # Restarts the server
 if is_running_authserver; then
  as_user "screen -p 0 -S $WORLDSCREEN -X eval 'stuff \"announce SERVER REBOOT IN 10 SECONDS!\"\015'"
  auth_stop
 else
  echo "Auth server is not running.			  \033[0;31m[ FAIL ]"
 fi
 if is_running_worldserver; then
  world_stop
 else
  echo "World server is not running.			 \033[0;31m[ FAIL ]"
 fi  
 world_start
  sleep 60
  auth_start
 ;;
announce)
 # Says something to the ingame chat
 if is_running_worldserver; then
  as_user "screen -p 0 -S $WORLDSCREEN -X eval 'stuff \"announce $2\"\015'"
 else
  echo "World server is not running to announce.  \033[0;31m[ FAIL ]"
 fi
 ;;
log-roll)
 # Moves and Gzips the logfile
 log_roll
 ;;
status)
 # Shows server status
 if is_running_worldserver
 then
  echo "World server is running.				  \033[0;32m[  ON  ]"
 else
  echo "World server is not running.			  \033[0;31m[  OFF ]"
 fi
  if is_running_worldserver
 then
  echo "Auth server is running.				   \033[0;32m[  ON  ]"
 else
  echo "Auth server is not running.			   \033[0;31m[  OFF ]"
 fi
 ;;
version)
 if is_running; then
  tac $LOGPATH/server.log | grep -m 1 "This server is running"
 else
  echo "The server needs to be running to check version."
 fi
 ;;
help|--help|-h)
 echo "Usage: $0 COMMAND"
 echo
 echo "Available commands:"
 echo -e "   start \t\t Starts the server"
 echo -e "   stop \t\t Stops the server"
 echo -e "   restart \t\t Restarts the server"
 echo -e "   log-roll \t\t Moves and gzips the logfile"
 echo -e "   announce \t\t\t Prints the given string to the ingame chat."
 echo -e "   status \t\t Displays server status"
 echo -e "   version \t\t Displays Trinity Core version and then exits"
 ;;
*)
 echo "Usage: wow {start|stop|restart|status|version|log-roll|announce|help}"
 exit 1
 ;;
esac
exit 0

 

Zdrojový kod config.example

 

 

#!/bin/bash
##############################################
# Settings file for WoW-init.d-script		#
# ================================		   #
##############################################
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#
#!! Make a copy of this file named config  !!#
#!! and edit the variables to your needs.  !!#
#!! In worldserver.conf set this vaules!!! !!#
#!! LogTimestamp = 0					   !!#
#!! GmLogPerAccount = 0					!!#
#!! GmLogTimestamp = 0					 !!#
#!! ChatLogTimestamp = 0				   !!#
#!! In authserver.conf set this vaules!!!  !!#
#!! LogTimestamp = 0					   !!#
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#
##############################################
# Name auth server
AUTHSERVER="authserver"
# Name of world server
WORLDSERVER="worldserver"
# Name to use for the screens instances
AUTHSCREEN="authserver"
WORLDSCREEN="worldserver"
# User that should run the server
USERNAME="wow"
# Path to bin server directory
WOWPATH="/home/${USERNAME}/bin"

# Log roling
# =====================
# Location for logs (folder).
LOGPATH="/home/${USERNAME}/logs"
# Format for log roll (tar or zip).
BACKUPFORMAT="tar"
# Location for old logs
# Used by the log-roll command
OLDLOGPATH="/home/${USERNAME}/oldlogs"
#Enter names of Logfiles
# =====================
#AUTH
AUTHLOGFILE="Auth.log"
AUTHSQLDRIVERLOGFILE="auth_SQLDriver.log"
#WORLD
SERVERLOGFILE="Server.log"
WORLDLOGFILE="World.log"
DBERRORLOGFILE="DBErrors.log"
CHARLOGFILE="Char.log"
GMLOGFILE="GM.log"
RALOGFILE="RA.log"
ARENALOGFILE="Arena.log"
SQLDEVELOPERLOFFILE="world_SQLDev.log"
SQLDRIVERLOGFILE="world_SQLDriver.log"
CHATLOGFILE="Chat.log"

# Things to leave alone 
# =====================
AUTHINVOCATION="./${AUTHSERVER}"
WORLDINVOCATION="./${WORLDSERVER}"
# DO NOT EDIT THINGS UNDER THIS LINE!!!
SALT=">8FoQEq EPzK[JI!rK]kA8Ls^4+:9a6=x^!v1y..?m?i 5{)ed##Do?}+-V0dY63"
#By BrnoPCmaniak
# Updates: https://github.com/BrnoPCmaniak/WoW-init.d-script

 

 

Edited by brnopcman

Share this post


Link to post
Share on other sites

Vyřešeno problem byl v

as_user "screen -p 0 -S $WORLDSCREEN -X eval 'stuff \"^C\"\015'""

na konci byli dvě uvozovky :oops:

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×