diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 66528895c..f1b25cf5b 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 100914 +# Version: 170914 #### Variables #### @@ -41,24 +41,27 @@ ip="0.0.0.0" # Logging logdays="7" +gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" # Start Variables fn_parms(){ defaultmap="KF-BioticsLab.rom" -parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${ini} log=${logfile}" +parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${ini} log=${gamelog}" # Start Variables for Objective mode #defaultmap="KFO-Steamland" -#parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${ini} log=${logfile}" +#parms="server ${defaultmap}?Game=KFStoryGame.KFStoryGame?VACSecured=true -nohomedir ini=${ini} log=${gamelog}" } ##### Script ##### @@ -108,7 +111,7 @@ fn_printwarn(){ fn_printwarnnl(){ echo -e "\r\033[K[\e[1;33m WARN \e[0;39m] $@" } - + # [ .... ] fn_printdots(){ echo -en "\r\033[K[ .... ] $@" @@ -153,28 +156,40 @@ fi # log manager will active if finds logs older than ${logdays} if [ `find "${scriptlogdir}"/* -mtime +${logdays}|wc -l` -ne "0" ]; then fn_printdots "Starting log cleaner" - sleep 1 + sleep 1 fn_printok "Starting log cleaner" - sleep 1 fn_scriptlog "Starting log cleaner" sleep 1 echo -en "\n" fn_printinfo "Removing logs older than ${logdays} days" - sleep 1 - echo -en "\n" fn_scriptlog "Removing logs older than ${logdays} days" sleep 1 + echo -en "\n" + if [ "${engine}" == "unreal2" ]; then + find "${gamelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}" + fi find "${scriptlogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}" find "${consolelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}" + if [ "${engine}" == "unreal2" ]; then + gamecount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) + fi scriptcount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) consolecount=$(find "${consolelogdir}"/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) + if [ "${engine}" == "unreal2" ]; then + count=$((${scriptcount} + ${consolecount} + ${gamecount})) + else + count=$((${scriptcount} + ${consolecount})) + fi + if [ "${engine}" == "unreal2" ]; then + find "${gamelogdir}"/* -mtime +${logdays} -exec rm {} \; + fi find "${scriptlogdir}"/* -mtime +${logdays} -exec rm {} \; find "${consolelogdir}"/* -mtime +${logdays} -exec rm {} \; fn_printok "Log cleaner removed ${count} log files" + fn_scriptlog "Log cleaner removed ${count} log files" sleep 1 echo -en "\n" - fn_scriptlog "Log cleaner removed ${count} log files" fi } @@ -244,8 +259,8 @@ sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l) if [ ${tmuxwc} -eq 1 ]; then fn_printoknl "Starting ${servicename} console" - sleep 1 fn_scriptlog "Console accessed" + sleep 1 tmux attach-session -t ${servicename} else fn_printfailnl "Starting ${servicename} console: ${servername} not running" @@ -296,8 +311,8 @@ fi fn_printdots "Starting backup ${servicename}: ${servername}" sleep 1 fn_printok "Starting backup ${servicename}: ${servername}" -sleep 1 fn_scriptlog "Backup started" +sleep 1 echo -en "\n" cd "${rootdir}" mkdir -pv "${backupdir}" > /dev/null 2>&1 @@ -365,9 +380,9 @@ if [ ! -z "${gamelogdir}" ]; then fi mail -s "${subject}" ${email} < "${emaillog}" fn_printinfo "Sent email notification to ${email}" +fn_scriptlog "Sent email notification to ${email}" sleep 1 echo -en "\n" -fn_scriptlog "Sent email notification to ${email}" } fn_emailtest(){ @@ -398,11 +413,11 @@ if [ -f gsquery.py ]; then port=$((${port} + 1)) fi fn_printinfo "Monitoring ${servicename}: Detected gsquery.py" - sleep 1 fn_scriptlog "Detected gsquery.py" + sleep 1 fn_printdots "Monitoring ${servicename}: Querying port: ${ip}:${port}: QUERYING" - sleep 1 fn_scriptlog "Querying port: ${ip}:${port}: QUERYING" + sleep 1 serverquery=$(./gsquery.py -a ${ip} -p ${port} -e ${engine} 2>&1) exitcode=$? if [ "${exitcode}" == "1" ]||[ "${exitcode}" == "2" ]||[ "${exitcode}" == "3" ]||[ "${exitcode}" == "4" ]; then @@ -412,9 +427,8 @@ if [ -f gsquery.py ]; then fn_scriptlog "Querying port: ${ip}:${port}: ${serverquery}" if [[ -z "${secondquery}" ]]; then fn_printinfo "Monitoring ${servicename}: Waiting 30 seconds to re-query" - sleep 1 fn_scriptlog "Waiting 30 seconds to re-query" - sleep 29 + sleep 30 secondquery=1 fn_serverquery fi @@ -428,14 +442,14 @@ if [ -f gsquery.py ]; then exit elif [ "${exitcode}" == "0" ]; then fn_printok "Monitoring ${servicename}: Querying port: ${ip}:${port}: OK" - sleep 1 fn_scriptlog "Querying port: ${ip}:${port}: OK" + sleep 1 echo -en "\n" exit elif [ "${exitcode}" == "126" ]; then fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: ERROR: ./gsquery.py: Permission denied" - sleep 1 fn_scriptlog "Querying port: ${ip}:${port}: ./gsquery.py: Permission denied" + sleep 1 echo -en "\n" echo "Attempting to resolve automatically" chmod +x -v gsquery.py @@ -452,9 +466,9 @@ if [ -f gsquery.py ]; then fi else fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: UNKNOWN ERROR" + fn_scriptlog "Querying port: ${ip}:${port}: UNKNOWN ERROR" sleep 1 echo -en "\n" - fn_scriptlog "Querying port: ${ip}:${port}: UNKNOWN ERROR" ./gsquery.py -a ${ip} -p ${port} -e ${engine} exit fi @@ -465,27 +479,26 @@ fn_monitorserver(){ fn_rootcheck fn_syscheck fn_autoip -fn_printdots "Monitoring ${servicename}: ${servername}" -sleep 1 -if [ ! -f ${lockselfname} ]; then +if [ ! -f ${lockselfname} ]; then fn_printinfo "Monitoring ${servicename}: No lock file found: Monitor disabled" sleep 1 echo -en "\n" - echo "To enable monitor run ${selfname} start" exit fi +fn_printdots "Monitoring ${servicename}: ${servername}" fn_scriptlog "Monitoring ${servername}" +sleep 1 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ]; then fn_printdots "Monitoring ${servicename}: Checking session: CHECKING" - sleep 1 fn_scriptlog "Checking session: CHECKING" + sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l) if [ ${tmuxwc} -eq 1 ]; then fn_printok "Monitoring ${servicename}: Checking session: OK" - sleep 1 - echo -en "\n" fn_scriptlog "Checking session: OK" + sleep 1 + echo -en "\n" fn_serverquery exit else @@ -504,11 +517,11 @@ if [ "${updatecheck}" = "0" ]; then fi else fn_printinfonl "Monitoring ${servicename}: Detected SteamCMD is checking for updates" - sleep 1 fn_scriptlog "Detected SteamCMD is checking for updates" + sleep 1 fn_printinfonl "Monitoring ${servicename}: When updates complete ${servicename} will start" - sleep 1 fn_scriptlog "When updates complete ${servicename} will start" + sleep 1 fi } @@ -555,8 +568,8 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l) fn_printdots "Stopping ${servicename}: ${servername}" -sleep 1 fn_scriptlog "Stopping ${servername}" +sleep 1 if [ "${pid}" == "0" ]; then fn_printfail "Stopping ${servicename}: ${servername} is already stopped" fn_scriptlog "${servername} is already stopped" @@ -579,6 +592,9 @@ fn_parms fn_logmanager tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l) if [ ${tmuxwc} -eq 0 ]; then + if [ "${engine}" == "unreal2" ]; then + mv "${gamelog}" "${gamelogdate}" + fi mv "${scriptlog}" "${scriptlogdate}" mv "${consolelog}" "${consolelogdate}" fi @@ -587,9 +603,9 @@ sleep 1 fn_scriptlog "Starting ${servername}" if [ ${tmuxwc} -eq 1 ]; then fn_printinfo "Starting ${servicename}: ${servername} is already running" + fn_scriptlog "${servername} is already running" sleep 1 echo -en "\n" - fn_scriptlog "${servername} is already running" exit fi # Create lock file diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 3624d7af0..99726d2ac 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 100914 +# Version: 170914 #### Variables #### @@ -34,20 +34,23 @@ ip="0.0.0.0" # Logging logdays="7" +gamelogdir="${rootdir}/log/server" scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" +gamelog="${gamelogdir}/${servicename}-game.log" scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.log" +gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log" scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log" consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log" # Start Variables fn_parms(){ defaultmap="DM-Rankin" -parms="server ${defaultmap}?game=XGame.xDMGame -nohomedir ini=${ini} log=${logfile}" +parms="server ${defaultmap}?game=XGame.xDMGame -nohomedir ini=${ini} log=${gamelog}" } ##### Script ##### @@ -97,7 +100,7 @@ fn_printwarn(){ fn_printwarnnl(){ echo -e "\r\033[K[\e[1;33m WARN \e[0;39m] $@" } - + # [ .... ] fn_printdots(){ echo -en "\r\033[K[ .... ] $@" @@ -142,28 +145,40 @@ fi # log manager will active if finds logs older than ${logdays} if [ `find "${scriptlogdir}"/* -mtime +${logdays}|wc -l` -ne "0" ]; then fn_printdots "Starting log cleaner" - sleep 1 + sleep 1 fn_printok "Starting log cleaner" - sleep 1 fn_scriptlog "Starting log cleaner" sleep 1 echo -en "\n" fn_printinfo "Removing logs older than ${logdays} days" - sleep 1 - echo -en "\n" fn_scriptlog "Removing logs older than ${logdays} days" sleep 1 + echo -en "\n" + if [ "${engine}" == "unreal2" ]; then + find "${gamelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}" + fi find "${scriptlogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}" find "${consolelogdir}"/* -mtime +${logdays}|tee >> "${scriptlog}" + if [ "${engine}" == "unreal2" ]; then + gamecount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) + fi scriptcount=$(find "${scriptlogdir}"/* -mtime +${logdays}|wc -l) consolecount=$(find "${consolelogdir}"/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) + if [ "${engine}" == "unreal2" ]; then + count=$((${scriptcount} + ${consolecount} + ${gamecount})) + else + count=$((${scriptcount} + ${consolecount})) + fi + if [ "${engine}" == "unreal2" ]; then + find "${gamelogdir}"/* -mtime +${logdays} -exec rm {} \; + fi find "${scriptlogdir}"/* -mtime +${logdays} -exec rm {} \; find "${consolelogdir}"/* -mtime +${logdays} -exec rm {} \; fn_printok "Log cleaner removed ${count} log files" + fn_scriptlog "Log cleaner removed ${count} log files" sleep 1 echo -en "\n" - fn_scriptlog "Log cleaner removed ${count} log files" fi } @@ -233,8 +248,8 @@ sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l) if [ ${tmuxwc} -eq 1 ]; then fn_printoknl "Starting ${servicename} console" - sleep 1 fn_scriptlog "Console accessed" + sleep 1 tmux attach-session -t ${servicename} else fn_printfailnl "Starting ${servicename} console: ${servername} not running" @@ -285,8 +300,8 @@ fi fn_printdots "Starting backup ${servicename}: ${servername}" sleep 1 fn_printok "Starting backup ${servicename}: ${servername}" -sleep 1 fn_scriptlog "Backup started" +sleep 1 echo -en "\n" cd "${rootdir}" mkdir -pv "${backupdir}" > /dev/null 2>&1 @@ -354,9 +369,9 @@ if [ ! -z "${gamelogdir}" ]; then fi mail -s "${subject}" ${email} < "${emaillog}" fn_printinfo "Sent email notification to ${email}" +fn_scriptlog "Sent email notification to ${email}" sleep 1 echo -en "\n" -fn_scriptlog "Sent email notification to ${email}" } fn_emailtest(){ @@ -387,11 +402,11 @@ if [ -f gsquery.py ]; then port=$((${port} + 1)) fi fn_printinfo "Monitoring ${servicename}: Detected gsquery.py" - sleep 1 fn_scriptlog "Detected gsquery.py" + sleep 1 fn_printdots "Monitoring ${servicename}: Querying port: ${ip}:${port}: QUERYING" - sleep 1 fn_scriptlog "Querying port: ${ip}:${port}: QUERYING" + sleep 1 serverquery=$(./gsquery.py -a ${ip} -p ${port} -e ${engine} 2>&1) exitcode=$? if [ "${exitcode}" == "1" ]||[ "${exitcode}" == "2" ]||[ "${exitcode}" == "3" ]||[ "${exitcode}" == "4" ]; then @@ -401,9 +416,8 @@ if [ -f gsquery.py ]; then fn_scriptlog "Querying port: ${ip}:${port}: ${serverquery}" if [[ -z "${secondquery}" ]]; then fn_printinfo "Monitoring ${servicename}: Waiting 30 seconds to re-query" - sleep 1 fn_scriptlog "Waiting 30 seconds to re-query" - sleep 29 + sleep 30 secondquery=1 fn_serverquery fi @@ -417,14 +431,14 @@ if [ -f gsquery.py ]; then exit elif [ "${exitcode}" == "0" ]; then fn_printok "Monitoring ${servicename}: Querying port: ${ip}:${port}: OK" - sleep 1 fn_scriptlog "Querying port: ${ip}:${port}: OK" + sleep 1 echo -en "\n" exit elif [ "${exitcode}" == "126" ]; then fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: ERROR: ./gsquery.py: Permission denied" - sleep 1 fn_scriptlog "Querying port: ${ip}:${port}: ./gsquery.py: Permission denied" + sleep 1 echo -en "\n" echo "Attempting to resolve automatically" chmod +x -v gsquery.py @@ -441,9 +455,9 @@ if [ -f gsquery.py ]; then fi else fn_printfail "Monitoring ${servicename}: Querying port: ${ip}:${port}: UNKNOWN ERROR" + fn_scriptlog "Querying port: ${ip}:${port}: UNKNOWN ERROR" sleep 1 echo -en "\n" - fn_scriptlog "Querying port: ${ip}:${port}: UNKNOWN ERROR" ./gsquery.py -a ${ip} -p ${port} -e ${engine} exit fi @@ -454,27 +468,26 @@ fn_monitorserver(){ fn_rootcheck fn_syscheck fn_autoip -fn_printdots "Monitoring ${servicename}: ${servername}" -sleep 1 -if [ ! -f ${lockselfname} ]; then +if [ ! -f ${lockselfname} ]; then fn_printinfo "Monitoring ${servicename}: No lock file found: Monitor disabled" sleep 1 echo -en "\n" - echo "To enable monitor run ${selfname} start" exit fi +fn_printdots "Monitoring ${servicename}: ${servername}" fn_scriptlog "Monitoring ${servername}" +sleep 1 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ]; then fn_printdots "Monitoring ${servicename}: Checking session: CHECKING" - sleep 1 fn_scriptlog "Checking session: CHECKING" + sleep 1 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l) if [ ${tmuxwc} -eq 1 ]; then fn_printok "Monitoring ${servicename}: Checking session: OK" - sleep 1 - echo -en "\n" fn_scriptlog "Checking session: OK" + sleep 1 + echo -en "\n" fn_serverquery exit else @@ -493,11 +506,11 @@ if [ "${updatecheck}" = "0" ]; then fi else fn_printinfonl "Monitoring ${servicename}: Detected SteamCMD is checking for updates" - sleep 1 fn_scriptlog "Detected SteamCMD is checking for updates" + sleep 1 fn_printinfonl "Monitoring ${servicename}: When updates complete ${servicename} will start" - sleep 1 fn_scriptlog "When updates complete ${servicename} will start" + sleep 1 fi } @@ -512,8 +525,8 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -E "^${servicename}:"|wc -l) fn_printdots "Stopping ${servicename}: ${servername}" -sleep 1 fn_scriptlog "Stopping ${servername}" +sleep 1 if [ "${pid}" == "0" ]; then fn_printfail "Stopping ${servicename}: ${servername} is already stopped" fn_scriptlog "${servername} is already stopped" @@ -536,6 +549,9 @@ fn_parms fn_logmanager tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep -E "^${servicename}:"|wc -l) if [ ${tmuxwc} -eq 0 ]; then + if [ "${engine}" == "unreal2" ]; then + mv "${gamelog}" "${gamelogdate}" + fi mv "${scriptlog}" "${scriptlogdate}" mv "${consolelog}" "${consolelogdate}" fi @@ -544,9 +560,9 @@ sleep 1 fn_scriptlog "Starting ${servername}" if [ ${tmuxwc} -eq 1 ]; then fn_printinfo "Starting ${servicename}: ${servername} is already running" + fn_scriptlog "${servername} is already running" sleep 1 echo -en "\n" - fn_scriptlog "${servername} is already running" exit fi # Create lock file @@ -792,6 +808,8 @@ mkdir -pv "${scriptlogdir}" touch "${scriptlog}" mkdir -pv "${consolelogdir}" touch "${consolelog}" +mkdir -pv "${gamelogdir}" +touch "${gamelog}" sleep 1 echo "" } @@ -912,4 +930,6 @@ case "$1" in echo "Usage: $0 {start|stop|restart|monitor|email-test|details|backup|console|debug|install|map-compressor}" exit 1;; esac +exit +esac exit \ No newline at end of file