From aee07cdd93619fca014d0a5b980c1b8186c2e7a9 Mon Sep 17 00:00:00 2001 From: Daniel Gibbs Date: Sun, 17 Nov 2013 19:51:27 +0000 Subject: [PATCH] Log fix on first run & server.cfg security * Stopped error on first run stating that ${consolelog} is missing. * Changed the server.cfg to be named ${servicename} instead to address some security concerns. * Minor code tidy up --- CounterStrike/csserver | 114 ++++++++--------- CounterStrikeGlobalOffensive/csgoserver | 111 +++++++++-------- CounterStrikeSource/cssserver | 110 +++++++++-------- DayOfDefeatSource/dodsserver | 117 +++++++++--------- HalfLife2Deathmatch/hl2dmserver | 110 +++++++++-------- KillingFloor/kfserver | 116 +++++++++--------- Left4Dead2/l4d2server | 110 +++++++++-------- NaturalSelection2/ns2server | 89 +++++++------- RedOrchestra/roserver | 155 ++++++++++-------------- TeamFortress2/tf2server | 109 +++++++++-------- TheHiddenSource/thsserver | 119 +++++++++--------- UnrealTournament2004/ut2k4server | 8 +- UnrealTournament99/ut99server | 10 +- 13 files changed, 660 insertions(+), 618 deletions(-) diff --git a/CounterStrike/csserver b/CounterStrike/csserver index 234dc59d2..f232b440a 100644 --- a/CounterStrike/csserver +++ b/CounterStrike/csserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,10 +12,9 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="de_aztec" port="27015" - clientport="27005" parms="-game cstrike +map ${defaultmap} -strictportbind -port ${port} +clientport ${clientport}" @@ -24,20 +23,21 @@ parms="-game cstrike +map ${defaultmap} -strictportbind -port ${port} +clientpor # Steam appid="90" +# Server Details +servicename="cs-server" +gamename="Counter Strike 1.6" +engine="goldsource" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/cstrike/server.cfg" +servercfg="${filesdir}/cstrike/${servicename}.cfg" backupdir="${rootdir}/backups" -# Server names -servicename="cs-server" -gamename="Counter Strike 1.6" - -engine="goldsource" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +# Server Details +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -76,7 +76,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -84,21 +84,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -123,10 +126,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -157,7 +160,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -207,17 +210,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -227,8 +230,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -259,7 +262,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -316,7 +319,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -324,7 +327,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -335,22 +338,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -361,13 +364,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -377,14 +380,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -392,14 +395,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -409,15 +412,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -427,7 +430,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -435,14 +438,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./hlds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -516,7 +519,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -552,6 +555,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} touch ${filesdir}/cstrike/listip.cfg touch ${filesdir}/cstrike/banned.cfg @@ -653,4 +659,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/CounterStrikeGlobalOffensive/csgoserver b/CounterStrikeGlobalOffensive/csgoserver index 8b494d332..d0c7182a0 100644 --- a/CounterStrikeGlobalOffensive/csgoserver +++ b/CounterStrikeGlobalOffensive/csgoserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,7 +12,7 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="de_dust" port="27015" sourcetvport="27020" @@ -24,20 +24,21 @@ parms="-game csgo +map ${defaultmap} -strictportbind -port ${port} +tv_port ${so # Steam appid="740" +# Server Details +servicename="csgo-server" +gamename="Counter Strike: Global Offensive" +engine="source" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/csgo/cfg/server.cfg" +servercfg="${filesdir}/csgo/cfg/${servicename}.cfg" backupdir="${rootdir}/backups" # Server Details -servicename="csgo-server" -gamename="Counter Strike: Global Offensive" - -engine="source" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -76,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -84,21 +85,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -123,10 +127,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -157,7 +161,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -207,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -227,8 +231,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -259,7 +263,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -316,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -324,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -335,22 +339,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -361,13 +365,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -377,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -392,14 +396,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -409,15 +413,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -427,7 +431,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -435,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -516,7 +520,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -551,6 +555,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" @@ -627,4 +634,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/CounterStrikeSource/cssserver b/CounterStrikeSource/cssserver index 6206bef58..baa5cbb62 100644 --- a/CounterStrikeSource/cssserver +++ b/CounterStrikeSource/cssserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,7 +12,7 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="de_dust" port="27015" sourcetvport="27020" @@ -24,19 +24,21 @@ parms="-game cstrike +map ${defaultmap} -strictportbind -port ${port} +tv_port $ # Steam appid="232330" +# Server Details +servicename="css-server" +gamename="Counter Strike: Source" +engine="source" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/cstrike/cfg/server.cfg" +servercfg="${filesdir}/csgo/cfg/${servicename}.cfg" backupdir="${rootdir}/backups" # Server Details -servicename="css-server" -gamename="Counter Strike: Source" -engine="source" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -75,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -83,21 +85,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -122,10 +127,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -156,7 +161,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -206,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -226,8 +231,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -258,7 +263,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -315,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -323,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -334,22 +339,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -360,13 +365,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -376,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -391,14 +396,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -408,15 +413,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -426,7 +431,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -434,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -515,7 +520,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -550,6 +555,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" @@ -626,4 +634,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/DayOfDefeatSource/dodsserver b/DayOfDefeatSource/dodsserver index 7b54b7843..0f4a42807 100644 --- a/DayOfDefeatSource/dodsserver +++ b/DayOfDefeatSource/dodsserver @@ -12,7 +12,7 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="dod_Anzio" port="27015" sourcetvport="27020" @@ -24,19 +24,20 @@ parms="-game dod +map ${defaultmap} -strictportbind -port ${port} +tv_port ${sou # Steam appid="232290" +# Server Details +servicename="dods-server" +gamename="Day of Defeat: Source" +engine="source" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/dod/cfg/server.cfg" +servercfg="${filesdir}/csgo/cfg/${servicename}.cfg" backupdir="${rootdir}/backups" -# Server Details -servicename="dods-server" -gamename="Day of Defeat: Source" -engine="source" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -75,7 +76,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -83,21 +84,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -122,10 +126,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -156,7 +160,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -206,17 +210,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -226,8 +230,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -258,7 +262,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -299,21 +303,23 @@ echo -e "========================================\nLogs\n======================= echo -e "Script log\n===================\n" }|tee ${scriptlogdir}/${servicename}-email.log > /dev/null 2>&1 tail -25 ${scriptlog} >> ${emaillog} -echo -e "\n\nConsole log\n====================\n" >> ${emaillog} -tail -25 ${consolelog} >> ${emaillog} +if [ ! -z ${consolelog} ];then + echo -e "\n\nConsole log\n====================\n" >> ${emaillog} + tail -25 ${consolelog} >> ${emaillog} +fi if [ ! -z ${gamelogdir} ];then echo -e "\n\nServer log\n====================\n" >> ${emaillog} - tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d' >> ${emaillog} + tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d'|tail -25 >> ${emaillog} fi mail -s "${subject}" ${email} < ${emaillog} echo -en "[\e[0;36m INFO \e[0;39m] Sent email notification to ${email}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog} } fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -321,7 +327,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -332,22 +338,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -358,13 +364,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -374,14 +380,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -389,14 +395,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -406,15 +412,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -424,7 +430,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -432,14 +438,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -513,7 +519,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -548,6 +554,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" diff --git a/HalfLife2Deathmatch/hl2dmserver b/HalfLife2Deathmatch/hl2dmserver index d3cafc5be..c86fa50fb 100644 --- a/HalfLife2Deathmatch/hl2dmserver +++ b/HalfLife2Deathmatch/hl2dmserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,7 +12,7 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="dm_lockdown" port="27015" sourcetvport="27020" @@ -24,19 +24,21 @@ parms="-game hl2mp +map ${defaultmap} -strictportbind -port ${port} +tv_port ${s # Steam appid="232370" +# Server Details +servicename="hl2dm-server" +gamename="Half Life 2: Deathmatch" +engine="source" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/hl2mp/cfg/server.cfg" +servercfg="${filesdir}/hl2mp/cfg/${servicename}.cfg" backupdir="${rootdir}/backups" # Server Details -servicename="hl2dm-server" -gamename="Half Life 2: Deathmatch" -engine="source" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -75,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -83,21 +85,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -122,10 +127,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -156,7 +161,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -206,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -226,8 +231,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -258,7 +263,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -315,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -323,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -334,22 +339,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -360,13 +365,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -376,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -391,14 +396,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -408,15 +413,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -426,7 +431,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -434,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -515,7 +520,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -550,6 +555,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" @@ -574,7 +582,7 @@ echo "=================================" mkdir -v ${rootdir}/log mkdir -v ${scriptlogdir} mkdir -v ${consolelogdir} - touch ${consolelog} + touch ${consolelog} if [ ! -h ${rootdir}/log/server ]; then ln -sv ${gamelogdir} ${rootdir}/log/server else diff --git a/KillingFloor/kfserver b/KillingFloor/kfserver index 3d37b2ff8..ae7cc0153 100644 --- a/KillingFloor/kfserver +++ b/KillingFloor/kfserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -20,22 +20,23 @@ steampass="password" appid="215360" # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/System" backupdir="${rootdir}/backups" compressedmapsdir="${rootdir}/Maps-Compressed" -# Server names +# Server Details servicename="kf-server" gamename="Killing Floor" engine="unreal2" ini="${servicename}.ini" -servername=`grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g'` +servername=$(grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g') # Logging logdays="7" + scriptlogdir="${rootdir}/log/script" consolelogdir="${rootdir}/log/console" @@ -46,7 +47,7 @@ emaillog="${scriptlogdir}/${servicename}-email.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 vars +# Start Variables defaultmap="KF-BioticsLab.rom" parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini=${ini} log=${logfile}" @@ -74,12 +75,13 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit fi } + fn_compressmaps(){ fn_rootcheck clear @@ -101,10 +103,17 @@ while true; do * ) echo "Please answer yes or no.";; esac done -mkdir ${compressedmapsdir} +mkdir ${compressedmapsdir} > /dev/null 2>&1 rm -rfv ${filesdir}/Maps/*.uz2 cd ${systemdir} -./ucc-bin compress ../Maps/* --nohomedir +for map in `ls ${filesdir}/Maps`; do + if [ `getconf LONG_BIT` = "64" ] + then + ./ucc-bin-linux-amd64 compress ../Maps/${map} --nohomedir + else + ./ucc-bin compress ../Maps/${map} --nohomedir + fi +done mv -fv ${filesdir}/Maps/*.uz2 ${compressedmapsdir} } @@ -143,21 +152,24 @@ cd ${rootdir} } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -182,14 +194,13 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${systemdir} - ./ucc-bin ${parms} } @@ -217,7 +228,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -267,17 +278,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -298,8 +309,6 @@ else webadminuser=$(grep AdminName= ${systemdir}/${ini}|sed 's/\AdminName=//g') fi webadminpass=$(grep AdminPassword= ${systemdir}/${ini}|sed 's/\AdminPassword=//g') - - echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT INI VARIABLE" @@ -322,19 +331,13 @@ if [ "${appid}" ];then else echo "OUTBOUND Steam Port 20660 UDP n/a" fi - fi echo "INBOUND WebAdmin ${webadminport} TCP ListenPort=${webadminport}" - echo "" - - - echo "${servername} WebAdmin" echo "=======================" echo "WebAdmin URL: http://localhost:${webadminport}" echo "WebAdmin Username: ${webadminuser}" - echo "WebAdmin Password: ${webadminpass}" echo "" echo "Config file" @@ -350,7 +353,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -407,7 +410,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -415,7 +418,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -426,22 +429,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -452,13 +455,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -468,14 +471,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -483,13 +486,13 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login ${steamuser} ${steampass} +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${logfile} if [ $(grep Denied ${logfile}|wc -l) -ge 1 ];then echo -e "[\e[0;31m FAIL \e[0;39m] ${servicename}: STEAMAUTH error detected!: Server update failed" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile} if [ "${emailnotification}" = "on" ];then mail -s "${servername}: Steam Auth Failure" ${email}< ${logfile} fi @@ -497,7 +500,7 @@ fi } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -507,15 +510,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -525,23 +528,22 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${systemdir} - tmux new-session -d -s ${servicename} "./ucc-bin ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -724,4 +726,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install|map-compressor|steam-auth}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/Left4Dead2/l4d2server b/Left4Dead2/l4d2server index a9d4d3ba7..556ed67a0 100644 --- a/Left4Dead2/l4d2server +++ b/Left4Dead2/l4d2server @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,7 +12,7 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="c5m1_waterfront" port="27015" sourcetvport="27020" @@ -24,19 +24,21 @@ parms="-game left4dead2 +map ${defaultmap} -strictportbind -port ${port} +tv_por # Steam appid="222860" +# Server Details +servicename="l4d2-server" +gamename="Left 4 Dead 2" +engine="source" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/left4dead2/cfg/server.cfg" +servercfg="${filesdir}/left4dead2/cfg/${servicename}.cfg" backupdir="${rootdir}/backups" # Server Details -servicename="l4d2-server" -gamename="Left 4 Dead 2" -engine="source" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -75,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -83,21 +85,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -122,10 +127,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -156,7 +161,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -206,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -226,8 +231,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -258,7 +263,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -315,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -323,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -334,22 +339,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -360,13 +365,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -376,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -391,14 +396,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -408,15 +413,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -426,7 +431,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -434,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -515,7 +520,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -550,6 +555,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" @@ -626,4 +634,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/NaturalSelection2/ns2server b/NaturalSelection2/ns2server index 0c5f7fd72..0a77d73a0 100644 --- a/NaturalSelection2/ns2server +++ b/NaturalSelection2/ns2server @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -16,7 +16,7 @@ email="email@example.com" steamuser="username" steampass="password" -# Start vars +# Start Variables servername="NS2 Server" defaultmap="ns2_summit" port="27015" @@ -39,7 +39,7 @@ gamename="Natural Selection 2" engine="spark" # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" backupdir="${rootdir}/backups" @@ -81,7 +81,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -89,21 +89,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -128,10 +131,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -162,7 +165,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -212,17 +215,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_ns2details(){ @@ -257,7 +260,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -314,7 +317,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -322,7 +325,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -333,22 +336,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -359,13 +362,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -375,14 +378,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -390,14 +393,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login ${steamuser} ${steampass} +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -407,15 +410,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -425,7 +428,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -433,14 +436,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./server_linux32 ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -514,7 +517,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -600,4 +603,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/RedOrchestra/roserver b/RedOrchestra/roserver index c51469f33..afa7a2128 100644 --- a/RedOrchestra/roserver +++ b/RedOrchestra/roserver @@ -20,19 +20,19 @@ steampass="password" appid="223250" # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" systemdir="${filesdir}/system" backupdir="${rootdir}/backups" compressedmapsdir="${rootdir}/Maps-Compressed" -# Server names +# Server Details servicename="ro-server" gamename="Red Orchestra: Ostfront 41-45" engine="unreal2" ini="${servicename}.ini" -servername=`grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g'` +servername=$(grep -s ServerName= ${systemdir}/${ini} | sed 's/ServerName=//g') # Logging logdays="7" @@ -46,7 +46,7 @@ emaillog="${scriptlogdir}/${servicename}-email.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 vars +# Start Variables defaultmap="RO-Arad.rom" parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir ini=${ini} log=${logfile}" @@ -74,12 +74,13 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit fi } + fn_compressmaps(){ fn_rootcheck clear @@ -101,10 +102,17 @@ while true; do * ) echo "Please answer yes or no.";; esac done -mkdir ${compressedmapsdir} +mkdir ${compressedmapsdir} > /dev/null 2>&1 rm -rfv ${filesdir}/Maps/*.uz2 cd ${systemdir} -./ucc-bin compress ../Maps/* --nohomedir +for map in `ls ${filesdir}/Maps`; do + if [ `getconf LONG_BIT` = "64" ] + then + ./ucc-bin-linux-amd64 compress ../Maps/${map} --nohomedir + else + ./ucc-bin compress ../Maps/${map} --nohomedir + fi +done mv -fv ${filesdir}/Maps/*.uz2 ${compressedmapsdir} } @@ -143,21 +151,24 @@ cd ${rootdir} } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -182,14 +193,13 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${systemdir} - ./ucc-bin ${parms} } @@ -217,7 +227,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -267,17 +277,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -298,8 +308,6 @@ else webadminuser=$(grep AdminName= ${systemdir}/${ini}|sed 's/\AdminName=//g') fi webadminpass=$(grep AdminPassword= ${systemdir}/${ini}|sed 's/\AdminPassword=//g') - - echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT INI VARIABLE" @@ -322,19 +330,13 @@ if [ "${appid}" ];then else echo "OUTBOUND Steam Port 20660 UDP n/a" fi - fi echo "INBOUND WebAdmin ${webadminport} TCP ListenPort=${webadminport}" - echo "" - - - echo "${servername} WebAdmin" echo "=======================" echo "WebAdmin URL: http://localhost:${webadminport}" echo "WebAdmin Username: ${webadminuser}" - echo "WebAdmin Password: ${webadminpass}" echo "" echo "Config file" @@ -350,7 +352,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -391,21 +393,23 @@ echo -e "========================================\nLogs\n======================= echo -e "Script log\n===================\n" }|tee ${scriptlogdir}/${servicename}-email.log > /dev/null 2>&1 tail -25 ${scriptlog} >> ${emaillog} -echo -e "\n\nConsole log\n====================\n" >> ${emaillog} -tail -25 ${consolelog} >> ${emaillog} +if [ ! -z ${consolelog} ];then + echo -e "\n\nConsole log\n====================\n" >> ${emaillog} + tail -25 ${consolelog} >> ${emaillog} +fi if [ ! -z ${gamelogdir} ];then echo -e "\n\nServer log\n====================\n" >> ${emaillog} - tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d' >> ${emaillog} + tail ${gamelogdir}/*|grep -v "==>"|sed '/^$/d'|tail -25 >> ${emaillog} fi mail -s "${subject}" ${email} < ${emaillog} echo -en "[\e[0;36m INFO \e[0;39m] Sent email notification to ${email}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${email}" >> ${scriptlog} } fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -413,7 +417,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -424,22 +428,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -450,13 +454,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -466,14 +470,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -481,13 +485,13 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login ${steamuser} ${steampass} +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${logfile} if [ $(grep Denied ${logfile}|wc -l) -ge 1 ];then echo -e "[\e[0;31m FAIL \e[0;39m] ${servicename}: STEAMAUTH error detected!: Server update failed" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: STEAMAUTH error detected!: Server update failed" >> ${logfile} if [ "${emailnotification}" = "on" ];then mail -s "${servername}: Steam Auth Failure" ${email}< ${logfile} fi @@ -495,7 +499,7 @@ fi } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -505,15 +509,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -523,7 +527,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -532,14 +536,14 @@ mv ${consolelog} ${consolelogdate} cd ${systemdir} tmux new-session -d -s ${servicename} "./ucc-bin ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -643,33 +647,10 @@ echo "=================================" fn_header echo "Configuring ${gamename} Server" echo "=================================" - - sleep 1 echo "Copying ${systemdir}/default.ini to ${systemdir}/${ini}" cp ${systemdir}/default.ini ${systemdir}/${ini} - - - - - - - - - - - - - - - - - - - - sleep 1 - echo "Creating log directorys" mkdir -v ${rootdir}/log mkdir -v ${scriptlogdir} @@ -691,18 +672,8 @@ echo "=================================" sleep 1 echo "Enabling WebAdmin" sed -i 's/bEnabled=False/bEnabled=True/g' ${systemdir}/${ini} - - - - - sleep 1 echo "Forcing server to start to get ports/server name to display correctly" - - - - - sleep 1 cd ${rootdir} ${selfname} start @@ -755,4 +726,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install|map-compressor|steam-auth}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/TeamFortress2/tf2server b/TeamFortress2/tf2server index b82acbe5c..e6e150126 100644 --- a/TeamFortress2/tf2server +++ b/TeamFortress2/tf2server @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,7 +12,7 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="ctf_2fort" port="27015" sourcetvport="27020" @@ -24,20 +24,21 @@ parms="-game tf +map ${defaultmap} -strictportbind -port ${port} +tv_port ${sour # Steam appid="232250" +# Server Details +servicename="tf2-server" +gamename="Team Fortress 2" +engine="source" + # Directorys rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/tf/cfg/server.cfg" +servercfg="${filesdir}/tf/cfg/${servicename}.cfg" backupdir="${rootdir}/backups" # Server Details -servicename="tf2-server" -gamename="Team Fortress 2" - -engine="source" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -76,7 +77,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -84,21 +85,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -123,10 +127,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -157,7 +161,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -207,17 +211,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -227,8 +231,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -259,7 +263,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -316,7 +320,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -324,7 +328,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -335,22 +339,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -361,13 +365,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -377,14 +381,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -392,14 +396,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -409,15 +413,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -427,7 +431,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -435,14 +439,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -516,7 +520,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header fn_steamdl @@ -551,6 +555,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" @@ -627,4 +634,4 @@ case "$1" in echo "Usage: $0 {start|stop|restart|update|monitor|email-test|details|backup|console|debug|install}" exit 1;; esac -exit +exit \ No newline at end of file diff --git a/TheHiddenSource/thsserver b/TheHiddenSource/thsserver index 517d64af8..72f8ad6ed 100644 --- a/TheHiddenSource/thsserver +++ b/TheHiddenSource/thsserver @@ -3,7 +3,7 @@ # Server Management Script # Author: Daniel Gibbs # Website: http://danielgibbs.co.uk -# Version: 011013 +# Version: 101113 #### Variables #### @@ -12,29 +12,29 @@ emailnotification="off" email="email@example.com" -# Start vars +# Start Variables defaultmap="hdn_docks" port="27015" sourcetvport="27020" clientport="27005" - parms="-game hidden +map ${defaultmap} -port ${port} +tv_port ${sourcetvport} +clientport ${clientport}" #### Advanced Variables #### +# Server Details +servicename="ths-server" +gamename="The Hidden: Source" +engine="source" + # Directorys -rootdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +rootdir="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd )" selfname="$0" filesdir="${rootdir}/serverfiles" -servercfg="${filesdir}/hidden/cfg/server.cfg" +servercfg="${filesdir}/hidden/cfg/${servicename}.cfg" # Server Details -servicename="hs-server" -gamename="Hidden: Source" -engine="source" - -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') # Logging logdays="7" @@ -46,6 +46,9 @@ scriptlog="${scriptlogdir}/${servicename}-script.log" consolelog="${consolelogdir}/${servicename}-console.log" emaillog="${scriptlogdir}/${servicename}-email.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" + ##### Script ##### # Do not edit # unless you know @@ -70,7 +73,7 @@ tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicen if [ ${tmuxwc} -eq 1 ];then fn_serverquery echo -en "\r[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} is already running" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already running" >> ${scriptlog} sleep 0.5 echo -en "\n" exit @@ -78,21 +81,24 @@ fi } fn_logmanager(){ +if [ ! -e ${consolelog} ];then + touch ${consolelog} +fi # log manager will active if finds logs older than ${logdays} if [ `find ${scriptlogdir}/* -mtime +${logdays} |wc -l` -ne "0" ];then echo -e "[\e[0;32m OK \e[0;39m] Starting log cleaner" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting log cleaner" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] Removing logs older than ${logdays} days" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Removing logs older than ${logdays} days" >> ${scriptlog} find ${scriptlogdir}/* -mtime +${logdays} |tee >> ${scriptlog} find ${consolelogdir}/* -mtime +${logdays} |tee >> ${scriptlog} - scriptcount=`find ${scriptlogdir}/* -mtime +${logdays}|wc -l` - consolecount=`find ${consolelogdir}/* -mtime +${logdays}|wc -l` + scriptcount=$(find ${scriptlogdir}/* -mtime +${logdays}|wc -l) + consolecount=$(find ${consolelogdir}/* -mtime +${logdays}|wc -l) count=$((${scriptcount} + ${consolecount})) find ${scriptlogdir}/* -mtime +${logdays} -exec rm {} \; find ${consolelogdir}/* -mtime +${logdays} -exec rm {} \; echo -e "[\e[0;36m INFO \e[0;39m] Log cleaner removed ${count} log files" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Log cleaner removed ${count} log files" >> ${scriptlog} fi } @@ -117,10 +123,10 @@ esac done fn_stopserver echo -en "[ .... ] Starting ${servicename}: ${servername} debug mode" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} debug mode" >> ${scriptlog} sleep 0.5 echo -en "\n" cd ${filesdir} @@ -151,7 +157,7 @@ sleep 0.5 tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep -v failed|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 1 ];then echo -e "\r[\e[0;32m OK \e[0;39m] Starting ${servicename} console" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} console accessed" >> ${scriptlog} sleep 1 tmux attach-session -t ${servicename} else @@ -201,17 +207,17 @@ if [ ${tmuxwc} -eq 1 ];then done fi echo -en "[ .... ] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername} backup" >> ${scriptlog} sleep 0.5 echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername} backup" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername} backup" >> ${scriptlog} sleep 1 echo -en "\n" cd ${rootdir} mkdir ${backupdir} > /dev/null 2>&1 -tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} +tar -cvzf ${backupdir}/${backupname}.tar.gz --exclude '${backupdir}' ${rootdir} echo -en "\r${servicename} backup complete" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: backup complete" >> ${scriptlog} } fn_details(){ @@ -221,8 +227,8 @@ echo "============================" echo "" echo "${servername} Ports" echo "=======================" -servername=`grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g'` -rcon=`grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g'` +servername=$(grep -s hostname ${servercfg} | sed 's/hostname //g'|sed 's/"//g') +rcon=$(grep -s rcon_password ${servercfg} | sed 's/rcon_password //g'|sed 's/"//g') echo "Ports the server is currently using" echo "" echo "DIRECTION DESCRIPTION PORT" @@ -253,7 +259,7 @@ if [ -f /etc/lsb-release ]; then elif [ -f /etc/debian_version ]; then os="Debian $(cat /etc/debian_version)" elif [ -f /etc/redhat-release ]; then - os=`cat /etc/redhat-release` + os=$(cat /etc/redhat-release) else os="$(uname -s) $(uname -r)" fi @@ -310,7 +316,7 @@ echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Sent email notification to ${ fn_emailtest(){ fn_rootcheck fn_syscheck -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Emailing test notification" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Email Test Notification - Testing ${servername}" failurereason="Testing ${servicename} email notification" @@ -318,7 +324,7 @@ if [ "${emailnotification}" = "on" ];then fn_emailnotification else echo -e "[\e[0;31m FAIL \e[0;39m] Email notification not enabled" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Email notification not enabled" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -329,22 +335,22 @@ fn_serverquery(){ # detects if the server locks up if [ -f serverquery.py ];then echo -e "[\e[0;36m INFO \e[0;39m] serverquery.py detected" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: serverquery.py detected" >> ${scriptlog} echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: QUERYING" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} - serverquery=`./serverquery.py 127.0.0.1 ${port} 2>&1` + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: QUERYING" >> ${scriptlog} + serverquery=$(./serverquery.py 127.0.0.1 ${port} 2>&1) sleep 1 if [ "${serverquery}" = "ERROR 1" ]||[ "${serverquery}" = "ERROR 2" ]||[ "${serverquery}" = "ERROR 3" ];then echo -e "[\e[0;31m FAIL \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 echo -e "[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} has locked up!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} has locked up!" >> ${scriptlog} sleep 1 fn_restartserver else echo -e "[\e[0;32m OK \e[0;39m] Querying ${servicename}: ${servername}: ${serverquery}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Querying ${servername}: ${serverquery}" >> ${scriptlog} sleep 1 fi fi @@ -355,13 +361,13 @@ fn_rootcheck fn_syscheck fn_logmanager echo -en "[ .... ] Monitor is checking ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is checking ${servername}" >> ${scriptlog} sleep 0.5 -updatecheck=`ps -ef|grep "${selfname} update"|grep -v grep|wc -l` +updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" @@ -371,14 +377,14 @@ if [ "${updatecheck}" = "0" ];then fn_emailnotification fi sleep 0.5 - echo -en "\n" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} + echo -en "\n" + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor is starting ${servername}" >> ${scriptlog} fn_startserver else echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: Monitor detected ${servername} is currently checking for updates!" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} is currently checking for updates!" >> ${scriptlog} echo -e "[\e[0;36m INFO \e[0;39m] ${servicename}: ${servername} will start when updating is complete" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} will start when updating is complete" >> ${scriptlog} fi } @@ -386,14 +392,14 @@ fn_updateserver(){ fn_rootcheck fn_syscheck echo -e "[\e[0;32m OK \e[0;39m] Updating ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Updating ${servername}" >> ${scriptlog} cd ${rootdir} cd steamcmd ./steamcmd.sh +login anonymous +force_install_dir ${filesdir} +app_update ${appid} validate +quit |tee -a ${scriptlog} } fn_restartserver(){ -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Restarting ${servername}" >> ${scriptlog} fn_stopserver fn_startserver } @@ -403,15 +409,15 @@ fn_rootcheck fn_syscheck pid=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) echo -en "[ .... ] Stopping ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopping ${servername}" >> ${scriptlog} sleep 0.5 if [ "${pid}" == "0" ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Stopping ${servicename}: ${servername} is already stopped" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: ${servername} is already stopped" >> ${scriptlog} else tmux kill-session -t ${servicename} echo -en "\r[\e[0;32m OK \e[0;39m] Stopping ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Stopped ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -421,7 +427,7 @@ fn_startserver(){ fn_rootcheck fn_syscheck echo -en "[ .... ] Starting ${servicename}: ${servername}" -echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} +echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Starting ${servername}" >> ${scriptlog} sleep 0.5 fn_runcheck fn_logmanager @@ -429,14 +435,14 @@ mv ${scriptlog} ${scriptlogdate} mv ${consolelog} ${consolelogdate} cd ${filesdir} tmux new-session -d -s ${servicename} "./srcds_run ${parms} |tee -a ${consolelog}" -tmuxwc=`tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l` sleep 1 +tmuxwc=$(tmux list-sessions 2>&1|awk '{print $1}'|grep ${servicename}|wc -l) if [ ${tmuxwc} -eq 0 ];then echo -en "\r[\e[0;31m FAIL \e[0;39m] Starting ${servicename}: Failed to start ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: failed to start ${servername}" >> ${scriptlog} else echo -en "\r[\e[0;32m OK \e[0;39m] Starting ${servicename}: ${servername}" - echo -e "$( date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} + echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Started ${servername}" >> ${scriptlog} fi sleep 0.5 echo -en "\n" @@ -561,7 +567,7 @@ while true; do [Yy]* ) break;; [Nn]* ) echo Exiting; return 1 ;; * ) echo "Please answer yes or no.";; - esac + esac done fn_header echo "" @@ -598,6 +604,9 @@ echo "=================================" sleep 1 echo "" echo "Creating server.cfg" + sleep 1 + echo "Saving as:" + echo "${servercfg}" touch ${servercfg} { echo -e "// server name" @@ -659,7 +668,7 @@ case "$1" in details) fn_details;; *) - echo "Usage: $0 {start|stop|restart|update|monitor|install|debug|email-test|details}" - exit 1;; + echo "Usage: $0 {start|stop|restart|update|monitor|install|debug|email-test|details}" + exit 1;; esac -exit +exit \ No newline at end of file diff --git a/UnrealTournament2004/ut2k4server b/UnrealTournament2004/ut2k4server index 87e469082..d90e8246e 100644 --- a/UnrealTournament2004/ut2k4server +++ b/UnrealTournament2004/ut2k4server @@ -20,7 +20,7 @@ systemdir="${filesdir}/System" backupdir="${rootdir}/backups" compressedmapsdir="${rootdir}/Maps-Compressed" -# Server names +# Server Details servicename="ut2k4-server" gamename="Unreal Tournament 2004" engine="unreal2" @@ -39,7 +39,7 @@ emaillog="${scriptlogdir}/${servicename}-email.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 vars +# Start Variables defaultmap="DM-Rankin" parms="server ${defaultmap}?game=XGame.xDMGame -nohomedir ini=${ini} log=${logfile}" @@ -423,12 +423,14 @@ sleep 0.5 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck - echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!\n" + echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" actiontaken="restarted ${servicename}" + sleep 0.5 + echo -en "\n" fn_emailnotification fi sleep 0.5 diff --git a/UnrealTournament99/ut99server b/UnrealTournament99/ut99server index 1650a9154..cdbd0d2d2 100644 --- a/UnrealTournament99/ut99server +++ b/UnrealTournament99/ut99server @@ -20,7 +20,7 @@ systemdir="${filesdir}/System" backupdir="${rootdir}/backups" compressedmapsdir="${rootdir}/Maps-Compressed" -# Server names +# Server Details servicename="ut99-server" gamename="Unreal Tournament 99" engine="unreal" @@ -39,7 +39,7 @@ emaillog="${scriptlogdir}/${servicename}-email.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 vars +# Start Variables defaultmap="DM-Deck16][" parms="server ${defaultmap}.unr ini=${systemdir}/${ini}" @@ -413,12 +413,14 @@ sleep 0.5 updatecheck=$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l) if [ "${updatecheck}" = "0" ];then fn_runcheck - echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!\n" + echo -en "\r[\e[1;33m WARN \e[0;39m] ${servicename}: Monitor detected ${servername} had stopped!" echo -e "$(date '+%b %d %H:%M:%S') ${servicename}: Monitor detected ${servername} had stopped!" >> ${scriptlog} if [ "${emailnotification}" = "on" ];then subject="${servicename} Monitor - Starting ${servername}" failurereason="${servicename} process was not running" actiontaken="restarted ${servicename}" + sleep 0.5 + echo -en "\n" fn_emailnotification fi sleep 0.5 @@ -596,7 +598,7 @@ echo "=================================" mkdir -v ${filesdir} cd ${filesdir} tar -zxvf ut-server-436.tar.gz ut-server/ --strip-components=1 - tar jxvf UTPGPatch451.tar.bz2 + tar -jxvf UTPGPatch451.tar.bz2 cd ${systemdir} while true; do read -p "Was the install successful? [y/N]" yn